我在Jenkinsfile(Groovy)上有这样的东西,我想在变量中记录stdout和退出代码,以便稍后使用这些信息.
sh "ls -l"
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,特别是因为你似乎无法在里面运行任何类型的groovy代码Jenkinsfile?
我正在尝试使用 Jenkins 管道 sh 命令的 returnStdout 功能。此处定义https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
从之前的问题和答案中提取:Is it possible to capture the stdout from the sh DSL command in the pipeline
我的原始代码:
node{
def output = sh(returnStdout: true, script: 'pwd')
println "output = ${output}"
}
Run Code Online (Sandbox Code Playgroud)
及其结果。您可以看到我正在获取退出代码而不是传递给我的变量的结果:
[Pipeline] node {
[Pipeline] sh
[Update_Stageing_DB] Running shell script
+ pwd
/mnt/storage/jenkins/workspace/Update_Stageing_DB
[Pipeline] echo
output = 0
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)
根据示例,我认为我可能需要添加 .trim() 以便我更新的代码如下所示:
node{
def output = sh(returnStdout: true, script: …Run Code Online (Sandbox Code Playgroud) 是否可以将sh命令的输出设置为Groovy变量?它似乎是将其设置为命令的状态.
输入示例:
node {
stage "Current Date"
def curDate = sh "date"
echo "The current date is ${curDate}"
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
Entering stage Current Date
Proceeding
[Pipeline] sh
[workspace] Running shell script
+ date
Tue May 10 01:15:05 UTC 2016
[Pipeline] echo
The current date is 0
Run Code Online (Sandbox Code Playgroud)
它显示The current date is 0,我希望它显示The current date is Tue May 10 01:15:05 UTC 2016你可以看到sh命令输出.我错了吗?
我想在管道Jenkins作业中获取最后的构建输出并附加到电子邮件中(使用emailext插件)。卷毛工作正常,并提供适当的构建输出,但我不能存储在变量中以附加到电子邮件中。我正在使用最新的詹金斯版本。
我可以看到有几个简单的sh命令的相关文章,但不适用于curl响应存储。
1。
def consoleOutput = sh(returnStdout: true, script: 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + 'myJob/lastBuild/consoleText').trim()
echo consoleOutput
Run Code Online (Sandbox Code Playgroud)
2。
sh 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + "${env.JOB_NAME}" + '/lastBuild/consoleText; echo $? > status'
def consoleOutput = readFile('status').trim()
Run Code Online (Sandbox Code Playgroud)
3。
def consoleOutput = sh(script: 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + '/myJob/lastBuild/consoleText', returnStatus: true).split("\r?\n")
echo …Run Code Online (Sandbox Code Playgroud)