我试图在阶段之间传递Jenkinsfile中某个阶段提取的变量。例如:
stage('Dummy Stage') {
sh '''#!/bin/bash -l
export abc=`output of some command`
.....
.....
'''
现在,如何将变量abc传递到后续阶段?我尝试通过在文件顶部添加def部分来设置变量,但看起来不起作用。在没有更整洁的方式的情况下,我必须重新输入命令
答案 0 :(得分:3)
这是我要获取的master上的提交次数作为全局环境变量的方法:
pipeline {
agent any
environment {
COMMITS_ON_MASTER = sh(script: "git rev-list HEAD --count", returnStdout: true).trim()
}
stages {
stage("Print commits") {
steps {
echo "There are ${env.COMMITS_ON_MASTER} commits on master"
}
}
}
}
答案 1 :(得分:2)
您可以使用更长的sh步骤形式并返回输出(请参见https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#sh-%20shell%20script)。您的变量应在阶段之外定义。
答案 2 :(得分:0)
您可以在阶段步骤中的脚本块内使用命令式创建的环境变量,例如:
stage("Stage 1") {
steps {
script {
env.RESULT_ON_STAGE_1 = sh (
script: 'echo "Output of some command"',
returnStdout: true
)
}
echo "In stage 1: ${env.RESULT_ON_STAGE_1}"
}
}
stage("Stage 2") {
steps {
echo "In stage 2: ${env.RESULT_ON_STAGE_1}"
}
}
This guide 通过示例说明管道中环境变量的使用。