我正在使用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
变量或甚至手动创建的变量,我无法在发布部署过程中检索其值 .
根据this文章,
隐藏(秘密)变量的值安全地存储在服务器上,用户保存后无法查看 . 在部署期间,发布管理服务在由任务引用时解密这些值,并通过安全HTTPS通道将它们传递给代理 .
所以IMO的变量应该可以被脚本访问(甚至是代理阶段),尽管它们是秘密的 .
1 回答
请参考以下步骤:
单击“库”选项卡
单击变量组
指定变量组名称
为Azure Key保管库启用链接密钥作为变量并链接Azure密钥保管库
单击添加以添加必要的秘密
编辑发布定义
选择“变量”选项卡
选择变量组
单击链接变量组以链接该变量组
在发布任务中直接使用相关变量(
$(variable name)
)