docker - 在Jenkins上执行Shell脚本时,作业随机失败

标签 docker jenkins

我有一个在Ubuntu 16.04.2 x64上运行的jenkins服务器,但是最近执行Shell脚本时,作业开始随机失败。我可以在服务器上手动执行脚本,并且可以运行,但是当jenkins执行时,由于以下原因,脚本将失败:

失败1

JavaProcess leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
Build step 'Execute shell' marked build as failure

失败2
# gradle script that downloads some jars..
Download https://jcenter.bintray.com/org/pegdown/pegdown/1.6.0/pegdown-1.6.0.jar
Build step 'Execute shell' marked build as failure
Skipped archiving because build is not successful

无法在失败2 中下载失败的 jar 并不总是相同的。

我试图将 Jenkins 更新到最新版本(2.164.2),但仍然存在相同的问题。

我已经尝试过提到的解决方案
Process leaked file descriptors error on JENKINS
对于失败1 ,但没有成功,仍然以相同的方式失败。

更新1

我已经在我的shell脚本中将此问题本地化为这一部分:
# Run script in docker container
chmod +x tmp.sh
docker run --entrypoint=/bin/bash -v $(pwd):/src --workdir=/build mydocker/myimage -c "/src/tmp.sh"
rm -f tmp.sh

因此,当docker通过Jenkins“Execute shell”执行tmp.sh时,它会随机失败。

从docker journalctl -u docker.service登录
May 21 10:33:23 jenkins dockerd[1332]: time="2019-05-21T10:33:23.886024261Z" level=error msg="attach: stdout: write unix /var/run/docker.sock->@: write: broken pipe"
May 21 10:33:25 jenkins dockerd[1332]: time="2019-05-21T10:33:25.186663914Z" level=error msg="attach: stderr: write unix /var/run/docker.sock->@: write: broken pipe"
May 21 10:33:25 jenkins dockerd[1332]: time="2019-05-21T10:33:25.186715731Z" level=error msg="attach failed with error: write unix /var/run/docker.sock->@: write: broken pipe"

从Docker容器docker container logs cranky_cori登录
BUILD SUCCESSFUL

Total time: 38.273 secs

This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14/userguide/gradle_daemon.html

结论

到stdout的管道和stderr损坏,jenkins将其报告为构建失败,但是docker容器日志显示docker继续执行并成功完成了gradle脚本。

最佳答案

在未成功找到问题原因之后,尽管我升级了操作系统,但是我还是很幸运!

配置不起作用

Ubuntu 16.04.2 x64
----------------------------
- Docker version 17.03.1-ce
- Jenkins 2.64.2
NOR 
- Docker version 18.09.6
- Jenkins 2.64.2
- Jenkins 2.64.3

升级Ubuntu后,这对我有用
Ubuntu 18.04.2 LTS 
----------------------------
- Docker version 18.09.6
- Jenkins 2.64.3

关于docker - 在Jenkins上执行Shell脚本时,作业随机失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56146414/

相关文章:

java - Spring-boot 应用程序不会在 docker 内启动时启动

docker - 在$ PATH中找不到pm2-runtime可执行文件

docker - 在 Dockerfile 中使用控制台输出

mongodb - 如何分析 Docker 容器的磁盘使用情况

jenkins - 无法通过 docker 容器执行 ansible playbook

jenkins - 如何为 Jenkins 多分支管道项目中的作业设置作业属性?

Jenkins 描述 setter 不起作用

docker - 通过 Docker 镜像重启获取最新 git 代码的最佳方式?

node.js - 在Linux服务器上安装chrome浏览器

linux - Jenkinsfile ,通过使用 sh,说没有这样的文件或目录,但它存在