jenkins - 如何在 Jenkins 流水线构建后阶段运行脚本
问题描述
是否可以使用作业 DSL 将 shell 脚本作为管道作业的构建后步骤执行?
post {
success {
sh """
echo "Pipeline Works"
"""
}
failure {
shell('''
|echo "This job failed"
|echo "And I am not sure why"
'''.stripMargin().stripIndent()
)
}
}
我能够执行 oneliner,但理想情况下我想执行一个脚本。
我试过这样的东西
publishers {
postBuildScripts {
steps {
shell('echo Hello World')
}
onlyIfBuildSucceeds(false)
onlyIfBuildFails()
}
}
}
但似乎发布者已被弃用。
解决方案
您最初的尝试很好,问题是.stripMargin().stripIndent()
在声明性管道中调用字符串是不可能的。要运行这样的 groovy 代码,您需要用script
块包装它。
尝试以下操作:
post {
success {
sh 'echo "Pipeline Works"'
}
failure {
script {
sh '''
|echo "This job failed"
|echo "And I am not sure why"
'''.stripMargin().stripIndent()
}
}
}
推荐阅读
- c++ - CMake 无法在 Clion 中链接 Boost 正则表达式库
- css - Select2 - 我们可以设置下拉菜单以匹配页面其余部分的样式吗?
- arrays - 如何控制在 Google 表格中触发多少个单元格
- ios - 未调用委托函数
- javascript - 使用javascript单击突出显示的元素
- reactjs - 我无法在 Azure Linux 环境中仅部署 ReactJS 应用程序的构建文件夹
- python - Pandas Out of Bounds 时间戳解决方法
- python - Python - 重复任务
- rust - 重新借用嵌套的可变引用
- javascript - 使用 gaxios(或 axios)管道请求