Jenkins CloudBees Docker Build Plugin如何设置其Shell路径

时间:2017-12-19 19:19:20

标签: docker jenkins

我正在使用我继承的Jenkins安装。此安装已安装CloudBees Docker Custom Build Environment Plugin。我们认为这个插件在我们的构建配置中为我们提供了一个漂亮的 Build in Docker container 复选框。当我们使用此选项配置作业时,它看起来像(基于Jenkins控制台输出)Jenkins使用以下命令运行构建

Docker container 548ab230991a452af639deed5eccb304026105804b38194d98250583bd7bb83q started to host the build
[WIP-Tests] $ docker exec -t 548ab230991a452af639deed5eccb304026105804b38194d98250583bd7bb83q /bin/sh -xe /tmp/hudson7939624860798651072.sh

但是 - 我们发现这会导致/bin/sh环境变量非常有限 - 包括$PATH并不包含/bin!所以

  1. CloudBees Docker自定义构建环境插件如何设置其/bin/sh环境。该用户是否可以通过UI进行配置(如果是,在哪里?)

  2. 看起来Jenkins正在使用docker exec - 我认为意味着它必须(无形地)使用{{1}设置一个具有长时间运行进程的容器}。有没有人知道 CloudBees Docker自定义构建环境插件插件如何调用docker run,如果用户可以管理?

1 个答案:

答案 0 :(得分:1)

考虑到这个插件已被采用"我会推荐官方JENKINS/Docker Pipeline Plugin

source code show very few recent commits

但请勿忘记设置为/bin/sh

的任何容器has a default entrypoint
ENTRYPOINT ["/bin/sh", "-c"]

然后:

https://wiki.jenkins.io/download/attachments/78676506/Capture%20d%E2%80%99%C3%A9cran%202015-06-25%20%C3%A0%2018.07.49.png?version=1&modificationDate=1435248491000&api=v2

  

在将SCM签出到从属工作空间后运行docker容器,然后由于Docker 1.3中引入了docker exec,所有后来的构建命令都在容器中执行

这意味着你要拉动或构建/运行的图像必须有一个shell,以允许docker exec在其中执行命令。