【问题标题】:Jenkins: running build does not provision docker slaveJenkins:运行构建不会提供 docker slave
【发布时间】:2015-10-06 12:51:07
【问题描述】:

我正在运行 Jenkins 1.609.1 和 docker-plugin 0.10.0 来配置 jenkins docker slave。 Docker 是 1.0.1,在 Ubuntu 14.04 上运行。

我已经根据https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin 上的每条指令根据evarga/jenkins-slave 创建了一个自定义的 Docker 映像(“快捷方式:拉取 Docker 映像”)。

在我的 Jenkins 配置中,我:

  • 将“Docker”添加到“云”区域
  • 指向本地 docker URL http://localhost:4243/ 并适当配置了 docker(我可以运行“测试连接”并返回“1.0.1”)
  • 使用 supervisord 创建了一个自定义 docker (my/jenkins:0.1) 映像以在其中运行 SSH、MySQL、Postgres、ElasticSearch、PHP 和 NodeJS
  • 手动运行容器,我可以用用户jenkins/jenkins SSH进去
  • 我还授予容器内的 jenkins 用户无密码 sudo 权限
  • 我在“Docker 模板”中添加了一个 docker 镜像(如上:my/jenkins:0.1),并通过“Docker SSH 启动器”提供了启动方法

在作业配置中:

  • 我已经检查了“Docker 容器”
  • 添加了我的标签
  • 源代码通过 git checkout 连接

当我运行作业时,只执行 git checkout,但不在从机上,而是直接在主机上:

Started by user MyUser
Building in workspace /var/lib/jenkins/workspace/Project-Core
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@github.com:MyUser/Project-Core.git # timeout=10
Fetching upstream changes from git@github.com:MyUser/Project-Core.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git -c core.askpass=true fetch --tags --progress git@github.com:MyUser/Project-Core.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 96dcbc7aa615451448184493c499c14eeb7050cc (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 96dcbc7aa615451448184493c499c14eeb7050cc
 > git rev-list 1405ab6d96a395e53c80f6d7353e11bea93675bc # timeout=10
Finished: SUCCESS

甚至没有尝试配置 docker slave 的迹象。

我错过了什么?

【问题讨论】:

    标签: git ssh jenkins docker slave


    【解决方案1】:

    您是否已将作业配置为在 Docker 从站上运行。我认为这可能是问题所在,因为根据您的说法,它在 master 上运行。

    可以从我的一篇文章中找到更多关于设置 docker 镜像的信息。

    http://www.scmtechblog.net/2016/01/setup-docker-slaves-for-jenkins.html

    【讨论】:

      【解决方案2】:

      感谢answer on the jenkinsci-user mailing list,我可以解决它:

      我添加到全局“Docker 模板”配置中的“标签”必须在作业配置中的“限制此项目可以运行的位置”字段中使用。

      我错误地将其添加到作业“Docker Container / Additional tag to add”字段中。

      附带说明:我使用的是 Docker 1.10.0,在修复上述问题后,结果证明现在可以使用该设置,我得到:

      配置错误;模板='DockerTemplate{labelString='jenkins',launcher=com.nirima.jenkins.plugins.docker.launcher.DockerComputerSSHLauncher@28c3da52,remoteFsMapping='',remoteFs='/home/jenkins',instanceCap=2147483647,mode=NORMAL ,retentionStrategy=com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy@1ccaa52c,numExecutors=1,dockerTemplateBase=DockerTemplateBase{image=jenkins:0.3}}' com.github.dockerjava.api.InternalServerErrorException:无法启动容器b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee:写/sys/fs/cgroup/cpuset/docker/b35c3d99a13b8b6365cd79a90b9fa65d3b3780b63a5a8d2683853583e81885ee/cpuset.cpus:无效的参数 P>

      升级到最新版本,在我的例子中是 1.7.1,立即修复了这个问题。

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2021-07-13
        • 2016-11-25
        • 2017-08-06
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 2019-01-28
        • 1970-01-01
        相关资源
        最近更新 更多