如何使用Jenkins声明式流水线凭据并转换为PowerShell凭据?

3

如何使用Jenkins声明性流水线凭据并转换为PowerShell凭据?

使用:

 environment {
       APPLICATION_SERVER_CRED = credentials('app-cred')
 }

仅仅使用转换后的安全字符串似乎不太有效,因为PSCredential构造函数需要不同类型的参数:字符串和安全字符串。

PSCredential(String, SecureString)

如何获取Jenkins Pipeline创建的环境变量?

$ENV:APPLICATION_SERVER_CRED_USR
$ENV:APPLICATION_SERVER_CRED_PSW

并将它们转换成变量,然后将这些变量传递给System.Management.Automation.PSCredential的构造函数?

在powershell脚本中运行时,这两个环境变量的类型是什么?

($ENV:APPLICATION_SERVER_CRED_USR).GetType()

System.String

直接使用构造函数是行不通的,因为它需要不同类型的参数。

如果jenkins没有将用户名转换为安全文本,我就不会遇到这个问题,因为我可以将密码转换为安全字符串,并满足PSCredential的构造函数参数要求。但由于它们是安全文本(且类型为System.String),我不能这样做。

如何将变量转换为创建PSCredential所需的格式?


也许我可以将掩码文本转换为安全字符串? - Judy007
1个回答

2

好的,没问题,这比我想象的要简单。我猜遮罩文本只是从UI中掩盖了它。这很有效。

$backendServerPass = ConvertTo-SecureString $ENV:APPLICATION_SERVER_CRED_PSW -AsPlainText -Force
$backendServerCredential = New-Object System.Management.Automation.PSCredential ($ENV:APPLICATION_SERVER_CRED_USR, $backendServerPass) -Verbose

我无法使其运行:我一直得到掩码值“****”,而不是实际值。因此,我的新凭据如下所示:[Pipeline] echo 用户名 密码 -------- -------- **** System.Security.SecureString - Max Cascone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接