如何在Azure DevOps Server Release中覆盖变量库



我们需要能够部署到两个不同的部署组,例如Development1和QA,但在QA版本中使用Development变量。实际上,我们有10个不同的版本,它们都是这样的。

我在发布定义中设置了2个阶段/环境。Development1首先运行,然后使用后台触发器部署QA。QA部署需要使用Development1中的变量,而不是基于环境名称的QA库中的默认变量。我需要一些方法让QA部署使用Development1变量集。

看起来yaml有办法做到这一点,但我们并没有在发布定义中使用yaml。我没有想出一个解决方案,希望有人能知道如何让它发挥作用。

在Azure Devops Release管道中,Development1 stageQA stage是独立的。

所以并没有直接的方法可以共享从阶段1到阶段2的变量(发布管道(。

解决方案

您需要将Development1阶段输出变量存储在一个存储中(例如keyvault、azure函数或rest api(。然后CCD_ 3就可以获取存储器中的变量。

例如:使用任务Azure密钥库操作或将机密写入密钥库,将其存储在Azure密钥库中。

另一种方法是使用restapi将其添加为带有powershell脚本的发布变量:

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.0

在下一阶段,它可以访问并从Release Variables中获取变量。

顺便说一句,Yaml现在支持通过表达式将变量从stage1直接传递到stage2。但目前仅限于yaml。

最新更新