I am using Jenkinsfile for scripting of a pipeline.
Is there any way to disable printing of executed shell commands in build logs?
Here is just a simple example of a jenkins pipeline:
node{
stage ("Example") {
sh('echo shellscript.sh arg1 arg2')
sh('echo shellscript.sh arg3 arg4')
}
}
which produces the following output in console log:
[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
Basically I would like to disable printing of the commands itself.
+ echo shellscript.sh arg1 arg2
+ echo shellscript.sh arg3 arg4
For instances where post processing is required. I extended the original solution provided here.
For example
wrapper function
The shell output is returned to trim() and saved to "output"
By default Jenkins starts shell scripts with flags
-xe
.-x
enables additional logging.-e
makes the script exit if any command inside returns non-zero exit status. To reset a flag I'd suggest two options:set +x
in the body of your script.-x
:sh('#!/bin/sh -e\n' + 'echo shellscript.sh arg1 arg2')
As for the second option you can define a wrapper function for convenience which will prepend the script with custom shebang and then call
sh