【问题标题】:How Can I make Secret variables (defined in azure release pipeline) be accessible to my Powershell marketplace task?如何使我的 Powershell 市场任务可以访问 Secret 变量(在 Azure 发布管道中定义)?
【发布时间】:2020-06-12 08:38:45
【问题描述】:

如何让我用于创建市场任务 (vsix) 的 Powershell 可以访问在 Azure 发布管道中定义的 Secret 变量 (SecretVar)?

【问题讨论】:

    标签: azure-devops azure-pipelines-release-pipeline vsix azure-devops-extensions azure-marketplace


    【解决方案1】:

    如何使我用于创建市场任务 (vsix) 的 Powershell 可以访问在 Azure 发布管道中定义的 Secret 变量 (SecretVar)?

    您无法直接从任务中访问秘密变量。此行为旨在保护秘密变量不被暴露在任务中。

    This documentation 声明秘密变量是:

    • 未解密为环境变量。因此,默认情况下,您的构建步骤运行的脚本和程序不会被授予访问权限。
    • 已解密以供您的构建步骤访问。因此,您可以在密码参数中使用它们,也可以在构建步骤中将它们显式传递到脚本或程序中(例如,作为 $(password))。

    这就是你不能在你的任务中使用秘密变量的原因。

    要解决这个问题,我们需要显式映射秘密变量:

    variables:
     GLOBAL_MYSECRET: $(mySecret) 
     GLOBAL_MY_MAPPED_ENV_VAR: foo 
    
    steps:
    
    - Youtask: |
    
      env:
        MY_MAPPED_ENV_VAR: $(mySecret) # right way to map to an env variable
    

    或者如果秘密变量可以设置为arguments,我们可以使用它:

    variables:
      VMS_USER: $(vmsUser)
      VMS_PASS: $(vmsAdminPass)
    
    pool:
      vmImage: 'ubuntu-latest'
    
    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)
    

    如果您的任务不支持 env:arguments 将秘密变量显式传递到脚本中,则无法在任务中使用它。

    您可以查看this threadthe document 了解更多详细信息。

    更新:

    我的自定义市场任务使用 Powershell(不是 yaml),即 我想在哪里访问它。如何在 powershell 中做到这一点?

    如果您想访问 powershell 脚本中的秘密变量而不是 inline/powershell 任务,您可以尝试通过 PowerShell 参数传递秘密变量的值:

    Param(
     [String]$pass
    )
    if ($pass) { Write-Host "variable is NOT null" }
    if (!$pass) { Write-Host "variable is null" }
    

    查看this thread了解一些详细信息。

    希望这会有所帮助。

    【讨论】:

    • 谢谢@Leo Liu-MSFT,我的自定义市场任务使用 Powershell(不是 yaml),这就是我想访问它的地方。如何在 powershell 中做到这一点?
    • @KorefKoref,我知道了。我已经为您的评论更新了我的答案,请检查它是否对您有帮助。
    • @KorefKoref,这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?
    猜你喜欢
    • 2020-08-11
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多