Jenkins声明性管道:代理指令中的If-Else语句

nwwlzxa7  于 2022-09-20  发布在  Jenkins
关注(0)|答案(2)|浏览(266)

我已经尝试使用If-Else内部代理指令为不同的环境(开发/生产)使用不同的代理。但是,如果我使用下面的管道脚本,我会收到错误。任何帮助都不胜感激!!

pipeline {
agent {
    if (env.ENVIRONMENT == 'prod') {
        label {
            label "EC2-1"
            customWorkspace "/home/ubuntu/eks-prod-backend/"
        }
    }
    else if (env.ENVIRONMENT == 'dev') {
         label {
            label "EC2-2"
            customWorkspace "/home/ubuntu/eks-dev-backend/"
        }
    }
}
}
aemubtdh

aemubtdh1#

这就是我建议的方法。在“管道”块之前定义一个变量,例如:

def USED_LABEL = env.ENVIRONMENT == 'prod' ? "EC2-1" : "EC2-2"
def CUSTOM_WORKSPACE = env.ENVIRONMENT == 'prod' ? "/home/ubuntu/eks-prod-backend/" : "/home/ubuntu/eks-dev-backend/"

然后,就像这样使用它:

pipeline {
agent {
    label USED_LABEL
    customWorkspace CUSTOM_WORKSPACE
}

}

我不确定是否需要标签内标签,但希望您能明白这一点。使用在管道执行之前指定的变量。

9w11ddsr

9w11ddsr2#

如果您只有两个环境,这样的东西可能会对您有所帮助?

pipeline {
   agent {
        label {
            label env.ENVIRONMENT == 'prod' ? "EC2-1" : "EC2-2"
            customWorkspace env.ENVIRONMENT == 'prod' ? "/home/ubuntu/eks-prod-backend/" : "/home/ubuntu/eks-dev-backend/"
        }
    }
    stages {
        stage("Build") {
            steps {
                echo "Hello, World!"
            }
        }
    }
}

否则,您可以查看此thread,这可能会对您有所帮助。

相关问题