【发布时间】:2018-01-10 08:05:00
【问题描述】:
我有一个包含多个阶段的 Jenkins 管道,它们都需要相同的环境变量,我这样运行:
script {
withCredentials([usernamePassword(credentialsId: 'COMPOSER_REPO_MAGENTO', passwordVariable: 'MAGE_REPO_PASS', usernameVariable: 'MAGE_REPO_USER')]) {
def composerAuth = """{
"http-basic": {
"repo.magento.com": {
"username": "${MAGE_REPO_USER}",
"password": "${MAGE_REPO_PASS}"
}
}
}""";
// do some stuff here that uses composerAuth
}
}
我不想每次都重新声明composerAuth,所以我想将凭据存储在一个全局变量中,这样我可以执行以下操作:
script {
// do some stuff here that uses global set composerAuth
}
我试过把它放在环境部分:
environment {
DOCKER_IMAGE_NAME = "magento2_website_sibo"
withCredentials([usernamePassword(credentialsId: 'COMPOSER_REPO_MAGENTO', passwordVariable: 'MAGE_REPO_PASS', usernameVariable: 'MAGE_REPO_USER')]) {
COMPOSER_AUTH = """{
"http-basic": {
"repo.magento.com": {
"username": "${MAGE_REPO_USER}",
"password": "${MAGE_REPO_PASS}"
}
}
}""";
}
}
但是(像我这样时髦的菜鸟)这行不通。那么使用凭据设置全局可访问变量但只需声明一次的最佳方法是什么?
【问题讨论】:
-
我尝试了该帖子中的建议,但不起作用(至少,不适合我)。这里的问题是我有来自不同插件的凭据,需要一种方法将这些凭据存储在全局可访问的(环境?)变量中。
-
好的,在这种情况下可能没问题:)
-
@Giel Berkers 鉴于您正在尝试发出 HTTP 请求,您是否尝试过使用 HTTPRequest 插件?如果是这种情况,那么有一种方法可以全局声明用户名和密码,并在没有“withCredentials”块的情况下使用它们。
标签: jenkins groovy jenkins-pipeline credentials