首页 > 解决方案 > 有条件地设置环境 Azure DevOps

问题描述

我正在使用需要有条件地设置environment属性的 Azure 管道。我通过传入此处记录Parameters的正文来从 rest API 调用中调用管道。. 当我尝试在编译时访问它以有条件地设置环境时,尽管变量是空的(假设它在编译时不可访问?)parameter

在此处输入图像描述

在此处输入图像描述

有人知道通过管道或 API 调用解决此问题的好方法吗?

标签: azureazure-devopscontinuous-integrationyaml

解决方案


经过一番挖掘,我找到了我的问题的答案,我希望这对未来的其他人有所帮助。

事实证明,BuildREST API 确实支持可在编译时使用的模板参数,但文档并没有明确告诉您。Runs端点也支持这一点。

我的请求的有效负载最终看起来像:

{
    "Parameters": "{\"Env\":\"QA\"}",
    "templateParameters": {"SkipApproval" : "Y"},
    "Definition": {
        "Id": 123
    },
    "SourceBranch": "main"
}

我的管道在编译时通过我的管道的以下(缩写版本)消耗了这些更改

parameters:
  - name: SkipApproval
    default: ''
    type: string
...
        ${{if eq(parameters.SkipApproval, 'Y')}}: 
            environment: NoApproval-All
        ${{if ne(parameters.SkipApproval, 'Y')}}:
            environment: digitalCloud-qa

推荐阅读