我可以像这里的示例中所解释的那样获取凭据 - https://jenkins.io/doc/book/pipeline/syntax/#environment
stage('Example') {
environment {
CREDS = credentials('MY_CREDS_DEV')
}
steps {
sh 'echo hello'
}
}
Run Code Online (Sandbox Code Playgroud)
但我想做的是根据某些条件获得凭证。
例如,我已经在 Jenkins 凭证中定义了MY_CREDS_DEV。MY_CREDS_QA我ENV=dev在 Jenkins 的“为运行准备环境”部分中定义了一个属性。
我想根据我的环境(即ENV属性)访问凭据。
我尝试使用CREDS = credentials('MY_CREDS_' + ${ENV})并尝试将字符串连接提取到一个单独的函数并像这样调用它,CREDS = credentials(concatenate(${ENV}))但我得到了Internal function call parameters must be strings.
所以看来我只能将一个字符串放入credentials()函数中,这基本上意味着对其进行硬编码。但是我如何选择使用哪些凭据 - dev 或 qa?
使用CREDS = credentials('MY_CREDS_' + ENV)或CREDS = credentials("MY_CREDS_${ENV}"). ${ENV}不会成为'dev'但${'dev'}因此不是字符串。
事实上 - 在使用 groovy 控制台之后 - 看起来${ENV}会尝试调用一个$使用闭包参数调用的函数{ENV},该函数又会返回'dev'。它会给出相同的结果,就ENV好像您定义了一个函数一样:
def $(Closure closure) {
closure()
}
Run Code Online (Sandbox Code Playgroud)
但很可能这不是您想要做的。
| 归档时间: |
|
| 查看次数: |
3747 次 |
| 最近记录: |