gpt4 book ai didi

docker - Jenkins Docker 管道退出代码 -1

转载 作者:IT老高 更新时间:2023-10-28 12:40:17 26 4
gpt4 key购买 nike

我们有一个 Jenkinsfile,它使用 docker 插件在给定容器中运行脚本。这适用于某些图像,但在其他图像上会立即失败,并出现 -1 退出代码。我们已将错误减少到一个简单的sleep。这是 Jenkins 文件:

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

这是 Jenkins 的输出

+ 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

有趣的是,如果 sleep 时间少于 1 秒,那么它就会过去(但 120 秒的 sleep 时间在许多其他图像上都可以正常工作)。

作为引用,这里是 jessie image行得通,还有一个 wheezy image没有。

有谁知道这里可能发生了什么?

最佳答案

看起来与未安装 ps 的图像有关。我刚刚使用了 debian 基础,并且能够复制它不起作用。安装了ps,果然成功了。您也可以使用 withRun 函数,它可以工作。这是我的 Jenkins 文件:

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跟踪此问题的状态!

关于docker - Jenkins Docker 管道退出代码 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com