我有两条詹金斯管道:
我需要两个管道,因为出于处理原因,我无法在单个管道中完成。
我看到关于如何在单个管道中的各个阶段之间共享变量有一些答案,但这不是我的情况。
我想在不同管道之间共享环境变量值。
管道A
pipeline {
agent any
...
stages {
stage('Profile Selection'){
steps {
script {
env.MAVEN_PROFILE = input message: 'Choose the profile :',
parameters: [choice(name: 'MAVEN_PROFILE',
choices: 'all\nserver\nclient', description: 'Profiles')]
}
}
}
stage(...){
steps {
script {
bat "mvn deploy -P ${env.MAVEN_PROFILE}"
}
}
}
... other stages
}
}
管道B
pipeline {
agent any
...
stages {
... other stages
stage(...){
steps {
script {
bat "mvn release ... -P ${env.environmentVariableValueFromPipelineA}"
}
}
}
}
}
答案 0 :(得分:1)
它们不在同一环境中运行,因此它们不能直接共享环境变量。最简单的方法可能是将这些值写入管道A中工作区中的文件,然后在管道B中将它们读回。诸如此类:
管道A:
sh "echo ${MAVEN_PROFILE} > .MAVEN_PROFILE"
管道B:
def MAVEN_PROFILE = sh(script: 'cat .MAVEN_PROFILE', returnStdout: true).trim()