簡體   English   中英

Jenkinsfile Docker代理步驟在1秒后死亡

[英]Jenkinsfile docker agent step dies after 1 second

我有一個非常簡單的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做的奇怪的事情,還是我完全不知道是否存在一些可配置的超時。

有人處理過嗎?

編輯:

這里是更多信息:

[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)中的錯誤,因此,在將其標記為已修復之前,我只是在手動docker run ... sh步驟。

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

例如:

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

我經歷了此問題,並通過將持久任務插件從1.13升級到1.16來解決了該問題。

1.16更新日志包含:

使用一個新的系統來確定sh步驟過程是否仍然存在,這應該解決各種魯棒性問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM