Kon*_*kst 1 vstest azure-devops azure-pipelines
我需要在从环境变量中检索的单元测试执行中使用秘密密码。
测试由版本 2.* 中的 Visual Studio 测试任务执行
_networkCredential = new NetworkCredential(Environment.GetEnvironmentVariable("DomainAccountUsername"), Environment.GetEnvironmentVariable("DomainAccountPassword"));
Run Code Online (Sandbox Code Playgroud)
如果我直接从 Powershell 设置 DomainAccountPassword 一切正常,测试成功结束,但我不想向团队中的其他用户显示密码。
Write-Host "##vso[task.setvariable variable=DomainAccountPassword;]MyExamplePassword"
Run Code Online (Sandbox Code Playgroud)
传递库组中定义的机密不起作用,导致身份验证错误。
Write-Host "##vso[task.setvariable variable=DomainAccountPassword;]$(secretPassword)"
Run Code Online (Sandbox Code Playgroud)
如何将机密传递给 VSTS 任务,以便它可以在外部 API 中进行身份验证?
谢谢你!
秘密变量使用 2048 位 RSA 密钥进行静态加密。代理上的机密可供任务和脚本使用(因此请注意谁有权更改您的管道)。
...
与普通变量不同,它们不会自动解密为脚本的环境变量。不过,您可以明确地将它们映射到其中。
要将秘密传递给脚本,请使用脚本任务输入变量的环境部分。
并按名称在脚本中使用新的 env var $env:topshelfPassword
您不应在 YAML 文件中设置秘密变量。相反,您应该使用 Web 界面在管道编辑器中设置它们。这些变量的范围仅限于您设置它们的管道。
以下示例显示如何将 Web 界面中设置的名为 mySecret 的秘密变量传递给脚本。
YAML
steps:
- powershell: |
# Using an input-macro:
Write-Host "This works: $(mySecret)"
# Using the env var directly:
Write-Host "This does not work: $env:MYSECRET"
# Using the mapped env var:
Write-Host "This works: $env:MY_MAPPED_ENV_VAR" # Recommended
env:
MY_MAPPED_ENV_VAR: $(mySecret)
Run Code Online (Sandbox Code Playgroud)
请注意该变量是如何在 web ui 中声明的,mySecret
以及对典型的非秘密变量 ( $env:mySecret
) 有效的方法不是 b/c 它是秘密。但是,在 YAML 中有效但在经典体验中无效的方法(我相信我是正确的)是使用“输入宏”语法 ( $(mySecret)
)。
归档时间: |
|
查看次数: |
3927 次 |
最近记录: |