无法阅读VSTS Online版本变量

时间:2018-05-15 14:57:42

标签: powershell azure environment-variables azure-devops azure-keyvault

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

#在发布步骤中添加为脚本参数

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

#剧本本身

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"

在这里,我可以将不同的KeyVault名称(根据我的需要)传递给脚本 - 通过替换$ KeyVaultNameArg和$ KeyVaultSecretNameArg变量。

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

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

variables script release-error step-release

根据this文章,

  

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

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

1 个答案:

答案 0 :(得分:0)

请参阅以下步骤:

  1. 单击“库”选项卡
  2. 点击+变量组
  3. 指定变量组名称
  4. 为Azure密钥保管库启用链接密钥作为变量并链接Azure密钥保管库
  5. 点击+添加以添加必要的秘密
  6. 修改发布定义
  7. 选择“变量”标签
  8. 选择变量组
  9. 点击链接变量组以链接该变量组
  10. 直接在发布任务($(variable name)
  11. 中使用相关变量