web-dev-qa-db-ja.com

Jenkins Dockerパイプライン終了コード-1

Dockerプラグインを使用して、指定されたコンテナー内でスクリプトを実行するJenkinsfileがあります。これは一部の画像では正常に機能しますが、他の画像では-1の終了コードですぐに失敗します。エラーを単純なsleepに減らしました。これはJenkinsfileです:

node("docker") {
    def wheezy_image = docker.image("pyca/cryptography-runner-wheezy")
    wheezy_image.pull()
    wheezy_image.inside {
        sh """sleep 120"""
    }
}

そして、これがジェンキンスの出力です

+ docker pull pyca/cryptography-runner-wheezy
Using default tag: latest
latest: Pulling from pyca/cryptography-runner-wheezy
Digest: sha256:ff5d9f661b05d831ace3811eec9f034fed7994279ff2307695a2cb7c32d6fa11
Status: Image is up to date for pyca/cryptography-runner-wheezy:latest
[Pipeline] sh
[3525-VE2ETALXLYB7VN3] Running Shell script
+ docker inspect -f . pyca/cryptography-runner-wheezy
.
[Pipeline] withDockerContainer
$ docker run -t -d -u 1000:1000 -w /var/jenkins_home/workspace/3525-VE2ETALXLYB7VN3 --volumes-from 1382a2e208dd5575acd26f11678855282fc854319096de60cef6818ea279f25f -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 ******** -e ******** --entrypoint cat pyca/cryptography-runner-wheezy
[Pipeline] {
[Pipeline] sh
[3525-VE2ETALXLYB7VN3] Running Shell script
+ sleep 120
[Pipeline] }
$ docker stop --time=1 887db8989e03a10dd89132b1ac6e18261ee4a49e6afe8b0c5568326b6c023654
$ docker rm -f 887db8989e03a10dd89132b1ac6e18261ee4a49e6afe8b0c5568326b6c023654
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

GitHub has been notified of this commit’s build result

ERROR: script returned exit code -1
Finished: FAILURE

興味深いことに、睡眠が1秒未満の場合、これは成功します(ただし、120秒の睡眠は、他の多くの画像で問題なく機能します)。

参考までに、ここでは jessie image が機能し、 wheezy image は機能します。

誰かがここで何が起こっているのか知っていますか?

18
Paul Kehrer

psがインストールされていないイメージに関連しているようです。私はdebianベースを採用しただけで、それが機能しないことを再現できました。 psをインストールし、それは動作しました。 withRun関数を使用することもできます。これが私のJenkinsfileです:

node("docker") {

    // Weezy that also ran... apt-get update && apt-get install -y procps
    def wheezy_image = docker.image("smalone/weezy-ps-test")
    wheezy_image.pull()
    wheezy_image.inside {
       sh 'sleep 2'
    }

      // Base image for weezy-ps-test that has no ps installed using withRun() instead of inside()
    wheezy_image = docker.image("debian:wheezy")
    wheezy_image.pull()
    wheezy_image.withRun { c ->
       sh 'sleep 2'
    }

    // Base image for weezy-ps-test that has no ps installed
    wheezy_image = docker.image("debian:wheezy")
    wheezy_image.pull()
    wheezy_image.inside {
       sh 'sleep 2'
    }
}

Dockerパイプラインプラグインが存在しない場合は、チケットを開きます。

編集:チケットが開いていましたが、根本的な原因はまだ見つかりませんでした。参照: https://issues.jenkins-ci.org/browse/JENKINS-40101 この問題のステータスを追跡するには!

13
Spencer Malone