首页 文章

无法读取VSTS Online版本变量

提问于
浏览
2

我正在使用VSTS环境变量并使用秘密类型的变量 .
我正在使用POSH脚本(文件)生成变量(实际上,要从Azure Key Vault获取值并将此值设置为变量):

# Add as a script parameter during the release step

-ResourceGroupNameArg "$(ResourceGroupName)" -KeyVaultNameArg "$(KeyVaultName)" -KeyVaultSecretNameArg "$(KeyVaultSecretName)"

# The script itself

Param(
   [string]$ResourceGroupNameArg,
   [string]$KeyVaultNameArg,
   [string]$KeyVaultSecretNameArg
)
<...>
$secret = Get-AzureKeyVaultSecret -VaultName $KeyVaultNameArg -Name $KeyVaultSecretNameArg 
$secretValue = $secret.SecretValueText
Write-Host "##vso[task.setvariable variable=SQLAdministratorPassword;issecret=true]$secretValue"

Here I can pass to the script different KeyVault names (according to my needs) - by substituting the $KeyVaultNameArg and $KeyVaultSecretNameArg variables.

对于使用 ##vso[task.setvariable variable= 配置的任何其他变量,我可以使用构造 $env:DatabaseName (例如在另一个POSH脚本中)或 $(DatabaseName) 在代理阶段步骤(使用Hosted 2017代理)检索它们 .

但是,对于 issecret=true 变量或甚至手动创建的变量,我无法在发布部署过程中检索其值 .

variables

script

release-error

step-release

根据this文章,

隐藏(秘密)变量的值安全地存储在服务器上,用户保存后无法查看 . 在部署期间,发布管理服务在由任务引用时解密这些值,并通过安全HTTPS通道将它们传递给代理 .

所以IMO的变量应该可以被脚本访问(甚至是代理阶段),尽管它们是秘密的 .

1 回答

  • 0

    请参考以下步骤:

    • 单击“库”选项卡

    • 单击变量组

    • 指定变量组名称

    • 为Azure Key保管库启用链接密钥作为变量并链接Azure密钥保管库

    • 单击添加以添加必要的秘密

    • 编辑发布定义

    • 选择“变量”选项卡

    • 选择变量组

    • 单击链接变量组以链接该变量组

    • 在发布任务中直接使用相关变量( $(variable name)

相关问题