Jenkinsfiledocker代理步骤在1秒后死亡

我有一个非常简单的Jenkinsfile,如下所示。

def workspace node { workspace = sh(returnStdout: true, script: 'pwd').trim() } pipeline { agent none stages { stage('Back-end') { agent { docker { image 'composer' args "-v /var/lib/jenkins/.composer/auth.json:/.composer/auth.json -v $workspace:/app" } } steps { sh 'php -v' sh 'composer install --no-interaction --working-dir=$WORKSPACE/backend' } } } } 

我已经到了完全按照预期工作的地步(例如:按预期装载卷,移动东西,拉取图像,实际运行composer install ),只有一个小例外…

docker run立即进入shell步骤,运行docker stop --time 1 ... sh 'composer install...'并在1秒钟后死亡,进入docker stop --time 1 ...docker stop --time 1 ... docker rm ...之后立即执行步骤。

我不知道这是来自Composer做些奇怪的事情,还是有一些可configuration的超时我完全不知道。

有没有人处理过这个?

编辑:

以下是更多信息:

 [Pipeline] withDockerContainer Jenkins does not seem to be running inside a container $ docker run -t -d -u 997:995 -v /var/lib/jenkins/.composer/auth.json:/.composer/auth.json -v [...] -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat composer [Pipeline] { [Pipeline] sh [workspace] Running shell script + php -v PHP 7.1.9 (cli) (built: Sep 15 2017 00:07:01) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies [Pipeline] sh [workspace] Running shell script + composer install --no-interaction --working-dir=/app/backend --no-progress --no-ansi Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 29 installs, 0 updates, 0 removals - Installing laravel/tinker (v1.0.2): Downloading[Pipeline] } $ docker stop --time=1 ee693aaa7cdde41b714fdc91dbc1b05ac07fe2be7904ab1ed528fb0a3f771047 $ docker rm -f ee693aaa7cdde41b714fdc91dbc1b05ac07fe2be7904ab1ed528fb0a3f771047 [Pipeline] // withDockerContainer [Pipeline] } 

并从早期的工作

 Installing dependencies (including require-dev) from lock file Package operations: 55 installs, 0 updates, 0 removals - Installing symfony/finder (v3.3.6): Downloading (connecting...)[Pipeline] } 

它的工作原理可以看出,但最后的返回码是….

 GitHub has been notified of this commit's build result ERROR: script returned exit code -1 Finished: FAILURE 

编辑2:

得到这个工作更简单,见更多的信息要点:

https://gist.github.com/chuckyz/6b78b19a6a5ea418afa16cc58020096e

这是Jenkins中的一个bug,所以直到这个被标记为固定的时候,我才用docker run ... sh步骤docker run ...手动执行。

https://issues.jenkins-ci.org/browse/JENKINS-35370

例如:

sh 'docker run -v $WORKSPACE:/app composer install'

我经历了这个,并通过将持久任务插件从1.13升级到1.16来解决它。

1.16更新日志包含:

使用新的系统来确定sh步骤过程是否仍然存在,这应该解决各种健壮性问题。