Jenkins: Access global passwords in powershell
我无法在Powershell中将jenkins全局密码作为环境变量进行访问。 我已经做了以下工作。 不知道我还缺少什么。
他们似乎都不让我在Jenkins的powershell调用中访问全局密码。 有人可以帮忙吗?
不要混淆EnvInject插件和Credentials Binding插件。两者的功能截然不同,但是两者都允许全局管理密码,但有所不同。
EnvInject方式
- 管理Jenkins->配置系统
- 在全局密码下
- 单击Add。
- 输入(环境变量的)名称和密码。
- 作业->配置
- 在建环境
- 选中将密码作为环境变量注入到构建中。
- 检查全局密码。
- 检查"掩码密码"参数。
凭证绑定方式
- 管理Jenkins->管理凭据
- 单击添加凭据(无域)。
- 选择带有密码或机密文本的用户名。
- 输入用户名和密码或密码。
- 作业->配置
- 在建环境
- 选中使用秘密文本或文件。
- 在绑定下,单击Add。
- 选择用户名和密码或秘密文本。
- 输入要保留凭据值的变量名。
- 选择特定凭证单选按钮。
- 从下拉列表中选择您配置的凭据
在您的Powershell中
-
就像访问任何其他环境变量一样访问它们:
$env:VAR_NAME
其中VAR_NAME 是环境变量名称(即EnvInject方式的步骤2或Credentials Binding方式的步骤4)
附录
EnvInject与凭证绑定
- EnvInject密码将在环境变量列表中显示为已加密。
- EnvInject密码将在控制台输出中显示加星号(*****)。
-
EnvInject密码使用与全局配置相同的变量名,因此您必须记住该全局变量名。
| - CB密码在环境变量列表中以纯文本显示。
- CB密码不会在控制台输出中加注星号。
-
CB密码可以从下拉菜单中绑定到您想要在作业中使用的任何变量名,因此您不必记住该全局变量名。
| - 凭证绑定实际上更多是用于投标凭证文件,例如证书和密钥,而不是密码值。
密码和秘密文本的用户名。
-
前者的格式为
username:password 。 -
后者只是
secret 。
在我们的构建中,我们通过以下方式(实际代码)使用它:
1 2 | $deploymentdir = $env:VC_RES +"\\azure" .".\\src\\Extensions\\Setup\\VirtoCommerce.PowerShell\\deploy-tfs.ps1" -deployment $deploymentdir -solutiondir $env:WORKSPACE |
然后将$ deploymentdir作为参数传递给ps1,效果很好。
环境变量VC_RES在"管理Jenkins"->"全局属性"下配置。"环境变量"旁边有一个复选框,我们在其中进行设置。 WORKSPACE变量由Jenkins本身设置。