我将配置从使用web.config转换移动到基于VSTS变量。我得到了流程变量,你定义了一个变量,选择了一个环境,你就可以了。我也看到"变量组",这些看起来很棒,有KeyVault集成,整体看起来是一个更好的选择。
但是......在我的VSTS发布流程中,我没有看到将变量组绑定到特定环境的方法。如果没有这个功能,我无法真实地看到这些对我有什么用处。
我尝试了一种解决方法,但它没有用。我试过了:
我想我可以想出一些类似于上面和设置变量的powershell,但这似乎对我来说太习惯了。
是否有其他人知道我可以轻松地在每个环境中使用变量组,而无需等待VSTS构建此功能(如果有的话)。顺便说一句,如果你想要这个功能,你可以在这里提出建议:Make it possible to link a variable group to a specific environment in a release definition
答案 0 :(得分:6)
现在已在VSTS变量组中将其实现为作用域。转到您的发布定义 - >变量 - >变量组 - >链接变量组,您将获得如下所示的链接窗口,您可以在其中选择要发布的范围或一个或多个环境!
我没有设法找到有关此功能的任何发布信息,我只是在调整我的版本时偶然发现它。
答案 1 :(得分:2)
我最终使用powershell脚本根据变量组定义我的过程变量,它运行良好。
假设我想要一个名为“LoggingConnectionString”的变量,每个环境都有不同的值
步骤:
Param(
[string]$LoggingConnectionString
)
Write-Host "##vso[task.setvariable variable=LoggingConnectionString]$LoggingConnectionString"
将您的变量组作为参数传递给此内联powershell,例如
-LoggingConnectionString“$(LoggingConnectionStringDev)”
在发布期间,powershell将从变量组中设置您的过程变量。如果powershell不适合您,则有other options
答案 2 :(得分:1)
不,没有办法在每个环境中使用变量组。
在您关联的the user voice时,您可以投票并跟进建议的功能。
目前的解决方法是使用环境变量来覆盖变量Group 中的变量。
假设变量组中值LoggingConnectionString
的变量Server=myDB
需要用于Dev环境和登台环境。但对于暂存环境,它需要使用变量Server=stageDB
中的另一个值(例如LoggingConnectionString
)。因此,您可以为临时环境添加值LoggingConnectionString
的环境变量Server=stageDB
。
在Dev环境中使用变量$(LoggingConnectionString)
时,它将使用变量组中定义的值(Server=myDB
)。
当在登台环境中使用变量$(LoggingConnectionString)
时,由于变量都在环境变量和变量组中定义,因此它将使用环境变量中定义的值(Server=stageDB
)。 / p>