当试图阅读 秘密变量 中设置的秘密变量名称,我得到了以下错误。
我知道这个变量是100%正确的,但是下面的方法都不能帮助读取它。其他的非秘密变量也能正常工作。
$myvar1 = $(SecretVariableName)
$myvar2 = "$(SecretVariableName)"
$myvar3 = $Env:SecretVariableName
所有这些方法都不行。其中SecretVariableName是Release Pipeline里面的一个秘密变量。
作为补充说明。
问题是当试图读取市场任务中的秘密变量时,该变量被用来创建一个vsix文件并上传到 视觉工作室市场
如何才能成功进入?
谢谢你
秘密变量在休息时用2048位RSA密钥加密。它们在构建或发布的任何日志输出中都会被自动屏蔽掉。
与普通的变量不同,它们不会自动解密成脚本的环境变量。你需要明确地映射秘密变量。
每个需要将秘密作为环境变量的任务都会进行重新映射。如果你想使用一个名为 mySecret
脚本中,使用 Environment
脚本任务的输入变量的部分。将环境变量名称设置为 MYSECRET
,并将该值设置为 $(mySecret)
.
详情请查看官方 文件. 此外,您还可以参考这个 案子 有类似问题。
更新:
下面的例子显示了如何使用一个叫做 mySecret
脚本中的秘密变量。
variables:
GLOBAL_MYSECRET: $(mySecret) # this will not work because the variable needs to be mapped as env
steps:
- powershell: |
# Using an input-macro:
Write-Host "This works: $(mySecret)"
# Using the mapped env var:
Write-Host "This works: $env:MY_MAPPED_ENV_VAR" # Recommended
env:
MY_MAPPED_ENV_VAR: $(mySecret) # right way to map to an env variable
您也可以使用 variables
定义。这个例子展示了如何使用秘密变量 $(vmsUser)
和 $(vmsAdminPass)
在 Azure 文件复制任务中。
variables:
VMS_USER: $(vmsUser)
VMS_PASS: $(vmsAdminPass)
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: 'my/path'
azureSubscription: 'my-subscription'
Destination: 'AzureVMs'
storage: 'my-storage'
resourceGroup: 'my-rg'
vmsAdminUserName: $(VMS_USER)
vmsAdminPassword: $(VMS_PASS)
有关示例,请参考 这个.