如何在Jenkins管道构建日志中禁用命令输出
我正在使用Jenkinsfile编写管道脚本。
有什么方法可以禁用在构建日志中打印执行的Shell命令吗?
这只是詹金斯管道的一个简单示例:
node{ stage ("Example") {
sh('echo shellscript.sh arg1 arg2')
sh('echo shellscript.sh arg3 arg4')
}
}
在控制台日志中产生以下输出:
[Pipeline] nodeRunning on master in /var/lib/jenkins/workspace/testpipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[testpipeline] Running shell script
+ echo shellscript.sh arg1 arg2
shellscript.sh arg1 arg2
[Pipeline] sh
[testpipeline] Running shell script
+ echo shellscript.sh arg3 arg4
shellscript.sh arg3 arg4
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
基本上,我想禁用命令本身的打印。
+ echo shellscript.sh arg1 arg2+ echo shellscript.sh arg3 arg4
回答:
默认情况下,Jenkins使用标志启动shell脚本-xe
。-x
启用其他日志记录。-e
如果其中的任何命令返回非零退出状态,则使脚本退出。要重置标志,我建议两个选项:
- 调用
set +x
脚本主体。 - 通过定制的shebang行,而无需
-x
:sh('#!/bin/sh -e\n' + 'echo shellscript.sh arg1 arg2')
至于第二个选项,您可以定义一个包装函数以方便使用,它将在脚本之前添加自定义shebang,然后调用 sh
def mysh(cmd) { sh('#!/bin/sh -e\n' + cmd)
}
以上是 如何在Jenkins管道构建日志中禁用命令输出 的全部内容, 来源链接: utcz.com/qa/426506.html