参数化凭证未设置时跳过Jenkins阶段
我试图跳过Jenkins中一个未设置参数化凭证的阶段(在本例中为AWS帐户参数)。然而,我似乎无法做到这一点,我不知道为什么。该阶段似乎会立即启动并失败,而不会评估我的“何时”跳过条件,后续阶段不会启动。下面是一个例子:参数化凭证未设置时跳过Jenkins阶段,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我试图跳过Jenkins中一个未设置参数化凭证的阶段(在本例中为AWS帐户参数)。然而,我似乎无法做到这一点,我不知道为什么。该阶段似乎会立即启动并失败,而不会评估我的“何时”跳过条件,后续阶段不会启动。下面是一个例子: parameters { credentials(name: 'AWS_CREDS', description: 'Skips AWS build if not specified.', credentialType: 'com.cloudbees.jenkins.plug
parameters {
credentials(name: 'AWS_CREDS', description: 'Skips AWS build if not specified.', credentialType: 'com.cloudbees.jenkins.plugins.awscredentials.AWSCredentialsImpl', required: false)
}
stage ('Build AWS') {
when {
expression { params.AWS_CREDS != null }
}
environment {
AWS_CREDS = credentials("${params.AWS_CREDS}")
}
steps {
sh 'Use $AWS_ACCESS_KEY_ID and $AWS_SECRET_ACCESS_KEY'
}
}
当我输入问题时,我无意中找到了一个解决方案,所以我想与大家分享一下 删除
AWS\u CREDS
环境变量,将when表达式更改为执行空字符串检查(而不是空检查),并使用withCredentials
绑定将步骤包围起来。综合起来:
stage ('Build AWS') {
when {
expression { "${params.AWS_CREDS}" != "" }
}
steps {
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: "${params.AWS_CREDS}"]]) {
sh 'Use $AWS_ACCESS_KEY_ID and $AWS_SECRET_ACCESS_KEY'
}
}
}