如何在jenkins管道构建日志中禁用命令输出
我正在使用Jenkinsfile编写管道脚本 是否有任何方法可以禁用在生成日志中打印已执行的shell命令 以下是jenkins管道的一个简单示例:如何在jenkins管道构建日志中禁用命令输出,jenkins,jenkins-pipeline,jenkinsfile,Jenkins,Jenkins Pipeline,Jenkinsfile,我正在使用Jenkinsfile编写管道脚本 是否有任何方法可以禁用在生成日志中打印已执行的shell命令 以下是jenkins管道的一个简单示例: node{ stage ("Example") { sh('echo shellscript.sh arg1 arg2') sh('echo shellscript.sh arg3 arg4') } } 在控制台日志中生成以下输出: [Pipeline] node Running on master in
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使用标志
-xe
启动shell脚本<代码>-x启用附加日志记录-e
使脚本在任何命令返回非零退出状态时退出。要重置标志,我建议两个选项:
set+x
-x
传递自定义shebang行:sh('#!/bin/sh-e\n'+'echo shellscript.sh arg1 arg2')
sh
def mysh(cmd) {
sh('#!/bin/sh -e\n' + cmd)
}
对于需要进行后处理的实例。我扩展了这里提供的原始解决方案 比如说
def output = printWithNoTrace("ping -c 1 $FQDN | grep PING).trim()
包装函数
def printWithNoTrace(cmd) {
steps.sh (script: '#!/bin/sh -e\n'+ cmd,returnStdout: true)
}
shell输出返回到trim()并保存到“output”这适用于为windows=>output=bat工作的任何人(returnStdout:true,脚本:“”)。正在为管道脚本中的每个sh打印“别名”列表。我没有弄清楚每个sh命令调用“alias”的位置/方式。但是只使用“-e”和不使用“-x”导致别名列表不再显示。请注意,在Jenkins提供的新“蓝海”视图中,这些环境变量仍将在UI中可见。我们通过将命令写入一个文件(使用writefile管道步骤),然后执行该文件来解决这个问题。