2017-09-24 23 views
1

我有一个非常简单的Jenkinsfile,如下所示。Jenkinsfile码头代理步骤1秒后死亡

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它进入壳步骤,运行sh 'composer install...'并在1秒后死亡,进入docker stop --time 1 ...docker rm ...步骤后立即。

我不知道这是来自作曲家做些奇怪的事情,还是有一些可配置的超时我完全没有意识到。

有没有人处理过这个?

编辑:

下面是详细信息:

[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

+0

您的jenkins是否在容器中运行?你看过工作的控制台输出了吗?他们有没有发现任何错误? – CandiedCode

+0

看到我上面的编辑,希望有人遇到过这个... –

回答

0

我经历了这一点,从1.13升级durable-task-plugin至1.16解决它。

1.16的changelog包含:

使用新的系统来确定SH步进程是否还活着,这应该解决各种问题的鲁棒性。