我正在使用Jenkinsfile编写管道脚本。
有什么方法可以禁用在构建日志中打印执行的Shell命令吗?
这只是詹金斯管道的一个简单示例:
node{ stage ("Example") { sh('echo shellscript.sh arg1 arg2') sh('echo shellscript.sh arg3 arg4') } }
在控制台日志中产生以下输出:
[Pipeline] node Running 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如果其中的任何命令返回非零退出状态,则使脚本退出。要重置标志,我建议两个选项:
-xe
-x
-e
set +x
sh('#!/bin/sh -e\n' + 'echo shellscript.sh arg1 arg2')
至于第二个选项,您可以定义一个包装函数以方便使用,它将在脚本之前添加自定义shebang,然后调用 sh
sh
def mysh(cmd) { sh('#!/bin/sh -e\n' + cmd) }