【发布时间】:2020-06-12 08:38:45
【问题描述】:
如何让我用于创建市场任务 (vsix) 的 Powershell 可以访问在 Azure 发布管道中定义的 Secret 变量 (SecretVar)?
【问题讨论】:
标签: azure-devops azure-pipelines-release-pipeline vsix azure-devops-extensions azure-marketplace
如何让我用于创建市场任务 (vsix) 的 Powershell 可以访问在 Azure 发布管道中定义的 Secret 变量 (SecretVar)?
【问题讨论】:
标签: azure-devops azure-pipelines-release-pipeline vsix azure-devops-extensions azure-marketplace
如何使我用于创建市场任务 (vsix) 的 Powershell 可以访问在 Azure 发布管道中定义的 Secret 变量 (SecretVar)?
您无法直接从任务中访问秘密变量。此行为旨在保护秘密变量不被暴露在任务中。
This documentation 声明秘密变量是:
这就是你不能在你的任务中使用秘密变量的原因。
要解决这个问题,我们需要显式映射秘密变量:
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 thread 和the 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了解一些详细信息。
希望这会有所帮助。
【讨论】: