【问题标题】:error while running shell script through jenkins pipeline通过詹金斯管道运行shell脚本时出错
【发布时间】:2024-04-25 23:50:01
【问题描述】:

尝试运行 shell 脚本时出现以下错误

+ /home/pqsharma/symlinkBuild.sh 19.07
sh: line 1: 21887 Terminated              sleep 3

使用 Jenkinsfile:

 node ('linux')
        {
    stage('creating symlink')
              {stdout = sh(script:'/home/pqsharma/symlinkBuild.sh 19.07 ',  returnStdout: true)
              }
        }

【问题讨论】:

    标签: bash shell jenkins jenkins-pipeline


    【解决方案1】:

    这后面是JENKINS 55308: "intermittent "terminated" messages using sh in Pipelines"

    Jenkins master 从一个基于 jenkins/jenkins:2.138.2-alpine 的 Docker 镜像运行,其中特定的插件由 /usr/local/bin/install-plugins.sh 烘焙到镜像中

    消息源自持久任务插件,它必须是 plugins.txt 插件之一的依赖项。

    检查是否适合您。

    JENKINS 55867引起:“如果包装进程被杀死,则永远不会检测到sh步骤终止”

    当您执行 shell 步骤时,Jenkins 会运行一个包装器 shell 进程,该进程负责保存脚本的退出代码。如果此进程被终止,那么 Jenkins 永远不会发现您的脚本已终止,并且该步骤将永远挂起。

    这个好像是在durable-task-plugin v1.22之后引入的

    诊断:

    sleep 3 是 shell 步骤执行的一部分。
    后台进程每 3 秒接触一次代理上的特定文件,Jenkins 主机作为代理检查该文件上的时间戳,以了解脚本是否仍在运行。
    根据此处的报告,似乎有什么东西导致该进程在某些系统上被杀死,但我不知道它可能会是什么。

    可能的原因:

    该错误不仅存在于持久任务插件中,尽管症状来自那里。它是在您升级工作流作业时引入的。我已设法将其精确到特定版本。

    将工作流作业升级到 2.27 或更高版本会触发该错误。 (2.26 不存在。)

    所以尝试将您的工作流作业插件降级到 2.25

    【讨论】:

    • 不是直接回答我的问题,而是关于 shell 步骤如何在 Jenkins 中工作的 TIL。谢谢你:)
    最近更新 更多