我已经通过配置在jenkins中定义了一个环境(全局)变量,如下所示
REPORT = "Test, ${CycleNumber},${JOB_NAME}"
我在我的管道中定义了一个名为Cycle的参数,它的值为new和update。基于这个周期值,CycleNumber应该被更新,我在我的管道中使用脚本块通过groovy进行了如下尝试
if(Cycle == "New")
{
CycleNumber = "12345"
}
else if (Cycle == "Update")
{
CycleNumber = "7890"
}
在此更新之后,如果我回显“${env.REPORT}”,我会得到值“Test,,TestJob”,其中的CycleNumber变量未更新。能否让我知道是否有方法更新此CycleNumber字段?
2条答案
按热度按时间gstyhher1#
不要依赖Groovy的字符串插值来替换
CycleNumber
。_CYCLE_NUMBER_
),您可以稍后在流程中替换它。此外,一旦设置了newReport变量,请确保使用相同的变量。如果执行
"${env.REPORT}"
,则始终会获得分配给tne环境变量的原始值。kh212irz2#
以下是一个解决方法:Updating environment global variable in Jenkins pipeline from the stage level - is it possible?
TLDR:您不能覆盖在environment(global)中声明的全局环境变量,但是您可以使用withEnv()函数将脚本块 Package 在管道中以引用更新的值,例如: