【问题标题】:Job randomly fails when executing a shell script on Jenkins在 Jenkins 上执行 shell 脚本时作业随机失败
【发布时间】:2019-05-15 09:50:51
【问题描述】:

我有一个在 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

Fail 2中下载失败并不总是同一个jar。

我已尝试将 jenkins 更新到最新版本 (2.164.2) 但仍然存在同样的问题。

我已经尝试过中提到的解决方案 Process leaked file descriptors error on JENKINS 对于 Fail 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 脚本。

【问题讨论】:

  • 尝试手动运行此命令并检查错误
  • @yarin 正如我在描述中所说的那样 - 我已经尝试手动运行该命令并且它没有失败
  • 你尝试过作为 jenkins 用户吗?
  • 感谢@yarin,我以 jenkins 用户和 root 身份尝试过 - 手动运行时它仍然有效。
  • @yarin 我已经更新了更多信息,请参阅 update1。您现在知道可能导致问题的原因吗?提前致谢!

标签: docker jenkins


【解决方案1】:

在没有成功找到我的问题的原因后,我想升级我的操作系统,我很幸运!

配置不起作用

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

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多