在Jenkins作业的Bash脚本中引用全局凭据
我创建了全局凭据(用户名、密码)并提供了自定义ID。如何在Bash脚本中引用此ID?我已经在我的作业配置中选中了“注入全局密码” 我试过了,但没用 假设全局凭据的ID为“USER\u PASSWORD”,我的bash脚本已尝试:在Jenkins作业的Bash脚本中引用全局凭据,jenkins,Jenkins,我创建了全局凭据(用户名、密码)并提供了自定义ID。如何在Bash脚本中引用此ID?我已经在我的作业配置中选中了“注入全局密码” 我试过了,但没用 假设全局凭据的ID为“USER\u PASSWORD”,我的bash脚本已尝试: echo ${USER_PASSWORD} echo ${env:USER_PASSWORD} 不起作用。我在网上读了一些帖子,我需要查询Jenkins API来获取凭证。听起来不对。使用,全局凭据可能会被注入到构建上下文中。通过选中作业配置页面的生成环境部分中标记为
echo ${USER_PASSWORD}
echo ${env:USER_PASSWORD}
不起作用。我在网上读了一些帖子,我需要查询Jenkins API来获取凭证。听起来不对。使用,全局凭据可能会被注入到构建上下文中。通过选中作业配置页面的生成环境部分中标记为“使用密文”或“文件”的复选框,可以完成此操作。添加用户名和密码(分开)绑定,选择您创建的特定凭据,并定义用户名和密码变量
下面是一个正在使用的凭据绑定插件示例,但使用冒号分隔的用户名/密码变量,而不是两个单独的变量:
然后可以使用shell脚本中定义的用户名和/或密码变量。假设用户名值为foo
,密码值为bar
用户名和密码绑定,变量名用户\u凭证
:
echo $USER_CREDENTIALS # -> foo:bar
用户名和密码(分开)绑定,变量名USER\u ID
和USER\u password
:
echo $USER_ID # -> foo
echo $USER_PASSWORD # -> bar
如果您的凭证ID为“USER\u PASSWORD”,则必须使用以下命令读取:USER\u credentials=credentials('USER\u PASSWORD')
。执行此操作后,用户名和密码在以下环境变量中可用:USER\u CREDENTIALS\u USR
和USER\u CREDENTIALS\u PSW
。Jenkins总是在变量名称中添加\u USR
和\u PSW
结尾
示例管道(我没有完全测试它,但应该可以工作):
如果您得到***
(四个星号)作为输出,那么就可以了-Jenkins会在控制台输出中自动屏蔽用户名和密码
更多信息:。对于如何在bash脚本中使用参数化凭据参数username和password作为环境变量,我找不到一个直接的答案。以下几点对我很有用:
${USER}
和${PW}
在我的情况下,我决定与凭证
在我的例子中,我使用下面的代码来读取Active Directory中配置的凭据
Choices Paramater Plugin's Groovy Script to populate the choices.
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
jenkins.model.Jenkins.instance
)
def user = creds[0].username
def pwd= creds[0].password
def gettags = ("git ls-remote --tags https://$user:$pwd@github.com/<yourRepo>.git").execute()
Choices参数化插件的Groovy脚本来填充选项。
def creds=com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
jenkins.model.jenkins.instance
)
def user=creds[0]。用户名
def pwd=creds[0]。密码
def gettags=(“git ls remote--tags https://$user:$pwd@github.com/.git“.execute()
这样,凭证就不会硬编码在脚本中,这使得如果我们想要更改生成的令牌,它是可管理的
注意:我们使用GitHubTokens来执行操作,而不是密码您甚至可以通过选择参数表达式来获取要作为作业参数注入的凭据。这很好:)这并没有回答参数化访问多个凭据的问题。Danny Hajicek的回答是这样的。这应该被接受为答案。
stage('Commit') {
withCredentials([usernamePassword(credentialsId: 'hash', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh 'svn commit xxx.ear -m "Comment" --username $USERNAME --password $PASSWORD'
}
}
Choices Paramater Plugin's Groovy Script to populate the choices.
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
jenkins.model.Jenkins.instance
)
def user = creds[0].username
def pwd= creds[0].password
def gettags = ("git ls-remote --tags https://$user:$pwd@github.com/<yourRepo>.git").execute()