jenkins - 如何在 jenkinsFile 的环境部分添加 if 条件
问题描述
我正在编写一个 jenkins 脚本,我需要根据参数(QA/Prod)初始化环境。以下是我写的脚本:
def serverName = ${ServerName} // I get this value from the parametrized job value.
pipeline {
agent any
agent any
tools {
terraform 'Terraform'
}
environment {
AWS_ACCESS_KEY_ID = ""
AWS_SECRET_ACCESS_KEY = ""
}
stages {
stage('Set Environment') {
steps {
echo "Region is ${AWS_DEFAULT_REGION}"
echo "Server Name is: "+params.ServerName
script{
if ("QA" == params.ServerName){
withEnv(['AWS_ACCESS_KEY_ID='+credentials ('AWS_ACCESS_KEY_ID_QA')], ['AWS_SECRET_ACCESS_KEY='+credentials ('AWS_SECRET_ACCESS_KEY_QA')]){
echo "Key is ${AWS_SECRET_ACCESS_KEY}"
echo "Key is ${AWS_SECRET_ACCESS_KEY}"
}
}
if ("PROD" == params.ServerName){
withEnv(["AWS_ACCESS_KEY_ID=credentials('AWS_ACCESS_KEY_ID_PROD')"], ["AWS_SECRET_ACCESS_KEY=credentials('AWS_SECRET_ACCESS_KEY_PROD')"]){
echo "Key is ${AWS_SECRET_ACCESS_KEY}"
echo "Key is ${AWS_SECRET_ACCESS_KEY}"
}
}
}
}
}
我收到以下错误:
00:59:22 java.lang.IllegalArgumentException:预期命名参数,但得到 [[AWS_ACCESS_KEY_ID=@credentials(=AWS_ACCESS_KEY_ID_QA)],[AWS_SECRET_ACCESS_KEY=@credentials(=AWS_SECRET_ACCESS_KEY_QA)]] 00:59:22 at org.jenkinsci.plugins .workflow.cps.DSL.parseArgs(DSL.java:588) 00:59:22 at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:521) 00:59:22 at org.jenkinsci .plugins.workflow.cps.DSL.invokeStep(DSL.java:220) 00:59:22 at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:179) 00:59:22 at org .jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
解决方案
尝试
pipeline {
environment {
AWS_ACCESS_KEY_ID = GET_AWS_ACCESS_KEY_ID(env.serverName)
AWS_SECRET_ACCESS_KEY = GET_AWS_SECRET_ACCESS_KEY(env.serverName)
}
//your rest of the pipeline code
}
def GET_AWS_ACCESS_KEY_ID(Server_Name) {
if("QA".equals(Server_Name)) {
return credentials ('AWS_ACCESS_KEY_ID_QA');
} else if ("PROD".equals(Server_Name)) {
return credentials ('AWS_ACCESS_KEY_ID_PROD');
} else {
return 0;
}
}
def GET_AWS_SECRET_ACCESS_KEY(Server_Name) {
if("QA".equals(Server_Name)) {
return credentials ('AWS_SECRET_ACCESS_KEY_QA');
} else if ("PROD".equals(Server_Name)) {
return credentials ('AWS_SECRET_ACCESS_KEY_PROD');
} else {
return 0;
}
}
推荐阅读
- matrix - 爪哇 | 二进制矩阵
- asp.net - RSA 加密时出现错误长度异常
- data-protection - Windows 数据保护 API 如何使用新 PIN 码
- elasticsearch - 启用 xpack 后 Elastic Search 无法启动
- php - 在php中安装composer时遇到问题
- c# - 无法从单元测试程序集中访问静态变量
- reactjs - [material-ui][DatePicker] 为 DatePicker/TimePicker/DateTimePicker 更改 @material-ui/pickers Ok/Cancel 对话框按钮文本颜色
- javascript - 我如何跳过 document.querySelectorAll 的第一个结果
- java - 带有 com.sun.net.httpserver.HttpServer 的 Java SSE 服务器
- elasticsearch - 将 prem logstash 实例连接到 AWS 弹性云