无法读取Marketplace任务中的秘密Azure发布管道变量。

问题描述 投票:0回答:1

当试图阅读 秘密变量 中设置的秘密变量名称,我得到了以下错误。

术语 "SecretVariableName "未被识别为cmdlet、函数、脚本文件或可操作程序的名称。....

我知道这个变量是100%正确的,但是下面的方法都不能帮助读取它。其他的非秘密变量也能正常工作。

$myvar1 = $(SecretVariableName)
$myvar2 = "$(SecretVariableName)"
$myvar3 = $Env:SecretVariableName

所有这些方法都不行。其中SecretVariableName是Release Pipeline里面的一个秘密变量。

作为补充说明。

  1. 对于非秘密变量,它也能正常工作。
  2. 在管道中以内联脚本的形式运行也能正常工作。

问题是当试图读取市场任务中的秘密变量时,该变量被用来创建一个vsix文件并上传到 视觉工作室市场

如何才能成功进入?

谢谢你

azure-devops azure-pipelines azure-pipelines-build-task azure-pipelines-release-task azure-pipelines-tasks
1个回答
0
投票

秘密变量在休息时用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)

有关示例,请参考 这个.

© www.soinside.com 2019 - 2024. All rights reserved.