Jenkins Pipeline出现durability: command not found错误求助
Jenkinsfile「Ant Initialize」阶段出现durability命令未找到错误的解决思路
问题描述
执行Jenkinsfile的「Ant Initialize」阶段时,控制台报错临时路径下的脚本找不到durability命令,具体报错指向Jenkins生成的script.sh.copy文件。
出错的Jenkinsfile代码
stages { stage('Run Install script') { steps { sh '''#!/bin/bash -e cd /sapcomm/zip/dxc-eshops/installer bash install.sh -r cx -A initAdminPassword=nimda ''' } } stage('Build') { steps { sh '''#!/bin/bash -e cd /sapcomm/zip/dxc-eshops/hybris/bin/platform . ./setantenv.sh ant clean all ''' } } stage('Ant Initialize') { steps { sh '''#!/bin/bash -e cd /sapcomm/zip/dxc-eshops/hybris/bin/platform ant initialize ''' } } stage('Run Server') { steps { sh '''#!/bin/bash -e cd /sapcomm/zip/dxc-eshops/hybris/bin/platform bash hybrisserver.sh ''' } } } }
控制台错误信息
[Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Ant Initialize) [Pipeline] sh /var/lib/jenkins/workspace/dxceshop@tmp/durable-3524078f/script.sh.copy: line 3: durability: command not found
问题根源
这是Jenkins的已知BUG,由Durability相关组件在生成临时执行脚本时出现语法错误导致,脚本中意外插入了未定义的durability命令。
可行解决方案
- 调整Jenkins版本:切换到未触发该BUG的LTS稳定版本(如2.332.3及之前),或升级到已修复该问题的后续版本。
- 修改Pipeline脚本规避:
给sh步骤添加returnStatus或returnStdout参数,改变脚本生成逻辑,示例如下:stage('Ant Initialize') { steps { script { def runStatus = sh( script: '''#!/bin/bash -e cd /sapcomm/zip/dxc-eshops/hybris/bin/platform ant initialize ''', returnStatus: true ) if (runStatus != 0) { error "Ant初始化执行失败,状态码:${runStatus}" } } } } - 禁用Durability插件:若不需要Pipeline高持久化能力,可尝试禁用相关Durability插件(注意:此操作可能影响Pipeline故障恢复能力,需提前评估风险)。
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

