我有以下管道(内容简化,但结构准确):
pipeline {
agent any
environment {
my_var = ""
}
stages {
stage('Stage_parallel'){
parallel{
stage('Stage_1') {
steps {
...
}
}
stage('Stage_2'){
steps {
withCredentials([usernamePassword(<LOGIN>, <PASS>)])
{
sh'''
...
var_1 = "/path/to/folder"
var_2 = "file_name"
my_var = "${var_1}/${var_2}"
echo ${my_var} ### returns correct value
'''
}}}}}
stage('Stage_3'){
steps {
sh 'echo ${my_var}' ### returns ""
}}}}
所以我尝试声明全局变量,在
Stage_2
中更新它并在Stage_3
中使用。但是,它仅在 Stage_2
sh
块中返回正确的值,而不是在外部......我也尝试过
pipeline
块之外定义变量,如 def my_var
Stage_2
中将其定义为 env.my_var = "${var_1}/${var_2}"
并在 Stage_3
中使用为 ${env.my_var}
但是没有一种方法允许从
my_var
获取 Stage_2
值...那么我应该如何修复管道?
sh
步骤之间的任何状态(在同一阶段或不同阶段内无关紧要),您有两种选择: