TFS\Team Services,在生成定义中使用来自变量组的Azure KeyVault机密

TFS\Team Services,在生成定义中使用来自变量组的Azure KeyVault机密,azure,tfs,azure-devops,azure-pipelines-build-task,azure-pipelines-release-pipeline,Azure,Tfs,Azure Devops,Azure Pipelines Build Task,Azure Pipelines Release Pipeline,我在TeamServices中有一个简单的构建设置。构建只需从Team Services托管的Git repo下载源代码,然后执行Powershell脚本 Powershell脚本接收4个参数 -SiteName "$(AppServiceName)" -AzureRMTenantID "$(AzureRMTenantID)" -AzureRMUN "$(AzureRMUN)" -AzureRMPW "$(AzureRMPW)" AppServiceName在生成排队时手动输入 3个Azure

我在TeamServices中有一个简单的构建设置。构建只需从Team Services托管的Git repo下载源代码,然后执行Powershell脚本

Powershell脚本接收4个参数

-SiteName "$(AppServiceName)" -AzureRMTenantID "$(AzureRMTenantID)" -AzureRMUN "$(AzureRMUN)" -AzureRMPW "$(AzureRMPW)"
AppServiceName在生成排队时手动输入

3个AzureRM*参数应该来自我链接到构建定义的变量组

变量组AzureDevOps配置为将Azure密钥库中的机密作为变量链接

根据我所能找到的关于这个模式的所有信息,它似乎应该是有效的

作为一个临时的健全性检查,我正在powershell脚本中打印变量,以便确认它们是否正确传递

到目前为止,我还无法正确打印任何AzureRM*变量的值,这使我相信它们没有按预期传递

Generating script.
Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW ""
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "d:\a\_temp\23b9a27a-4b6d-4232-8e24-150173e08915.ps1"
Working Set of Variables:
SiteName:  Testers
ResourceGroup: Applications
ASE Name: appservices-ase
Location: East US
Additional Variables:
AzureRMTenantID: 
我不希望在这里的log命令中打印变量

Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW ""
但我希望它们能在我的脚本中打印出来,在脚本中我会明确地把它们写出来

Write-Host "Working Set of Variables:`nSiteName: "$SiteName"`r`nResourceGroup: "$RG"`r`nASE Name: "$ASEName"`r`nLocation: "$Location
Write-Host "Additional Variables:`nAzureRMTenantID: "$AzureRMTenantID"`r`n"$AzureRMUN"`r`n"$AzureRMPW
如果我在本地运行PS脚本,则值会按预期打印

PS C:\ashley\scm\AzureAutomation\AppServices> & '.\Create Canned App Service Application.ps1' -SiteName "tester" -AzureRMTenantID 12345 -AzureRMUN user -AzureRMPW 1234
Working Set of Variables:
SiteName:  tester
ResourceGroup: Applications
ASE Name: appservices-ase
Location: East US
Additional Variables:
AzureRMTenantID:  12345
user
1234

有人知道怎么做吗?我想知道问题是否与KeyVault权限有关,因为请求来自Team Services内置的“Hosted 2017”代理队列

密钥Vault支持当前仅适用于版本定义。您可以创建一个发布定义并将您的Git Repo链接为一个工件,并且可以实现同样的目的


我在将Azure Keyvault VG链接到BD时收到此错误。

密钥Vault支持当前仅适用于版本定义。您可以创建一个发布定义并将您的Git Repo链接为一个工件,并且可以实现同样的目的


我在将Azure Keyvault VG链接到BD时收到此错误。

首先,您无法打印机密变量的值,您可以将数据发送到服务(例如Web API)以在构建/发布期间获取实际数据

其次,密钥库机密变量用于发布,它将在发布期间添加Azure密钥库任务


如果在内部版本中使用,将得到空值。您可以添加到构建定义中,然后可以在以下任务中使用相关变量。(不需要在构建定义中链接到该变量组)

首先,您不能打印出秘密变量的值,您可以将数据发送到服务(例如Web API)以获取构建/发布期间的实际数据

其次,密钥库机密变量用于发布,它将在发布期间添加Azure密钥库任务


如果在内部版本中使用,将得到空值。您可以添加到构建定义中,然后可以在以下任务中使用相关变量。(不需要在构建定义中链接到该变量组)

感谢starain MSFT,我今天将尝试将其构建为一个发行版,看看是否有帮助。有没有计划在将来的构建定义中支持这一点?@Sage没有官方文章提到,但您可以提交用户声音。另一方面,我的回复/回答是否解决了您最初的问题?@starianchen MSFT这应该记录在VSTS站点中,请确保文档已更新。@starianchen MSFT实际上只是检查文档,它说它也应该用于构建?嗨@starianchen MSFT我正在研究samer概念,在这里我可以从KeyVault获取秘密。但是,我得到的是***格式的。因此,我无法将它们用于进一步的任务。itThanks starain MSFT有什么问题,我今天将尝试将其构建为一个发行版,看看是否有帮助。有没有计划在将来的构建定义中支持这一点?@Sage没有官方文章提到,但您可以提交用户声音。另一方面,我的回复/回答是否解决了您最初的问题?@starianchen MSFT这应该记录在VSTS站点中,请确保文档已更新。@starianchen MSFT实际上只是检查文档,它说它也应该用于构建?嗨@starianchen MSFT我正在研究samer概念,在这里我可以从KeyVault获取秘密。但是,我得到的是***格式的。因此,我无法将它们用于进一步的任务。有趣的是,在我所有的笨拙中,我没有得到任何类似的错误。如果我这样做的话,我可能就不会发表这个问题了。此错误是否显示在门户网站或其他地方?@Sage我认为我们最近开始显示错误,这些更改可能到现在为止还没有到达您的帐户。您可以添加starain MSFTHi@Harshil指出的KeyVault任务,链接到生成定义时仍然没有错误消息。不过不用担心,我理解KeyVault支持的变量组在构建定义中不起作用的要点。这是我们能够在我们的环境中解决的问题。我希望重用Jenkins的PS脚本来执行发布管理中的相同工作。最后,我选择注释掉AzureRMLogin过程(需要这些变量),并使用Azure上内置的Powershell任务来完成这项工作。有趣的是,我在所有的工作中都没有遇到任何类似的错误。如果我这样做的话,我可能就不会发表这个问题了。此错误是否显示在门户网站或其他地方?@Sage我认为我们最近开始显示错误,这些更改可能到现在为止还没有到达您的帐户。您可以添加starain MSFTHi@Harshil指出的KeyVault任务,链接到生成定义时仍然没有错误消息。不过不用担心,我理解KeyVault支持的变量组在构建定义中不起作用的要点。这是我们的共同目标