我创建了全局凭据(用户名、密码)并提供了自定义ID。如何在Bash脚本中引用此ID?我已经在作业配置中选中了“inject global password”。
我尝试了Jenkins: Access global passwords in powershell,但不起作用。
假设全局凭据的ID是“USER_PASSWORD”,我的bash脚本尝试:
echo ${USER_PASSWORD}
echo ${env:USER_PASSWORD}
不起作用。我读了一些在线帖子,我需要查询Jenkins API来获得凭据。这听起来不对。
6条答案
按热度按时间mspsb9vt1#
使用Credentials Binding Plugin,可以将全局凭据注入到生成上下文中。这可以通过选中作业配置页的生成环境部分中标记为 * 使用机密文本或文件 * 的复选框来完成。添加 * 用户名和密码(分隔)* 绑定,选择您创建的特定凭据,并定义您的用户名和密码变量。
下面是一个正在使用的凭据绑定插件的示例,但使用了冒号分隔的用户名/密码变量,而不是两个单独的变量:
然后,您可以使用在shell脚本中定义的用户名和/或密码变量。假设用户名值为
foo
,密码值为bar
...USER_CREDENTIALS
:USER_ID
和USER_PASSWORD
:yhqotfr82#
如果您的凭证ID是“USER_PASSWORD”,您必须使用以下命令读取它:
USER_CREDENTIALS = credentials('USER_PASSWORD')
。完成此操作后,用户名和密码将在以下环境变量中可用:USER_CREDENTIALS_USR
和USER_CREDENTIALS_PSW
。Jenkins总是在变量名后面加上_USR
和_PSW
。示例管道(我没有完全测试它,但应该可以工作):
如果您得到
****
(四个星号)作为输出,这是可以的- Jenkins会在控制台输出中自动屏蔽用户名和密码。更多信息:https://jenkins.io/doc/book/pipeline/jenkinsfile/#usernames-and-passwords网站。
laik7k3q3#
对于如何在bash脚本中使用参数化凭据参数username和password作为环境变量,我找不到一个直接的答案。
1.添加凭据参数。我将其命名为“CREDENTIALS”。凭据类型为“用户名和密码”。x1c 0d1x
1.在生成环境中选中“使用机密文本或文件"。
1.添加“用户名和密码(分隔)”绑定。我将用户名变量设置为USER,将密码变量设置为PW。对于凭据,请选择“参数表达式”并输入步骤1中的名称。在本例中,它将是${CREDENTIALS}.
1.现在
${USER}
和${PW}
可用于bash脚本。1aaf6o9v4#
在我的情况下,我用withCredentials Credentials Binding Plugin解决了这个问题。
z9zf31ra5#
在我的示例中,我使用了以下代码来读取Active中配置的凭据
这样,凭据就不会硬编码在脚本中,这样,如果我们想更改生成的令牌,它就可以管理注意:我们使用GitHubTokens而不是密码来执行操作
0ejtzxu16#
对我来说,问题仅仅是大括号不起作用。