gpt4 book ai didi

jenkins - Jenkins声明式管道中的条件环境变量

转载 作者:行者123 更新时间:2023-12-04 02:40:28 24 4
gpt4 key购买 nike

我正在尝试获得一个如下所示的声明性管道:

pipeline {
environment {
ENV1 = 'default'
ENV2 = 'default also'
}
}


问题是,我希望能够基于任意条件覆盖ENV1或ENV2的值。我目前的需求只是将其作为分支机构的基础,但我可以想象更复杂的情况。

有没有理智的方法来实现这一目标?我在网上看到了一些类似的示例:

stages {
stage('Set environment') {
steps {
script {
ENV1 = 'new1'
}
}
}
}


但是我相信这并没有设置实际的环境变量,而是设置了一个局部变量,该局部变量将覆盖以后对ENV1的调用。问题是,我需要由nodejs脚本读取这些环境变量,而这些则需要是真实的机器环境变量。

有什么方法可以在jenkinsfile中将环境变量设置为动态的?

最佳答案

使用withEnv动态设置环境变量以用于管道的特定部分(例如,在运行节点脚本时)。像这样(用您的节点脚本替换sh步骤的内容):

pipeline {
agent { label 'docker' }
environment {
ENV1 = 'default'
}
stages {
stage('Set environment') {
steps {
sh "echo $ENV1" // prints default
// override with hardcoded value
withEnv(['ENV1=newvalue']) {
sh "echo $ENV1" // prints newvalue
}
// override with variable
script {
def newEnv1 = 'new1'
withEnv(['ENV1=' + newEnv1]) {
sh "echo $ENV1" // prints new1
}
}
}
}
}
}

关于jenkins - Jenkins声明式管道中的条件环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44007034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com