我们需要能够部署到两个不同的部署组,例如Development1和QA,但在QA版本中使用Development变量。实际上,我们有10个不同的版本,它们都是这样的。
我在发布定义中设置了2个阶段/环境。Development1首先运行,然后使用后台触发器部署QA。QA部署需要使用Development1中的变量,而不是基于环境名称的QA库中的默认变量。我需要一些方法让QA部署使用Development1变量集。
看起来yaml有办法做到这一点,但我们并没有在发布定义中使用yaml。我没有想出一个解决方案,希望有人能知道如何让它发挥作用。
在Azure Devops Release管道中,Development1 stage
和QA 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。