根据 cron 语法使用两个不同的参数安排 Azure DevpOs 管道

Schedule Azure DevpOs pipeline with two different parameters according to the cron syntax

我正在使用 Azure DevOps Pipeline 根据 cron 语法在不同的日期安排一个具有两个不同参数的管道。

查看触发器、条件,计划触发器和管道触发器似乎都不允许传递参数值。下面是我的参数。通常用户会用他选择的环境触发管道;没有任何问题。

parameters:
  - name: environment
    displayName: Select the Suite to execute
    default: Test
    values:
    - Test
    - Dev
    - QA

如何按带参数的计划向管道添加参数?

schedules:
- cron: "0 1 10-15 * sat"
  displayName: 7PM CST - SAT
  branches:
    include:
    - feature
- cron: "0 3 25-31 * sat"
  displayName: 9PM CST - SAT
  branches:
    include:
    - feature

还检查了不满足我需要的策略选项,我无法找到新工作来安排具有如下参数的计划 运行,因为用户需要触发此管道根据环境选择,如果我指定这些条件 jobs/tasks 将不会触发。

pool:
  vmImage: '**'
strategy:
  matrix:
    Run1:
      myvar: 12
    Run2:
      myvar: 14
    Run3:
      myvar: 16

我们似乎没有方法在管道期间自动动态更改参数值 运行。

作为解决方法,您可以尝试设置以前的作业并在此作业中添加以下步骤:

  1. 执行API“Builds - Get”,如果构建运行是由预定触发器触发的,来自API的响应调用,可以得到预定触发器的名称(triggerInfo.scheduleName)。在您的情况下,名称是“7PM CST - SAT”或“9PM CST - SAT”。

  2. 根据API调用返回的'scheduleName',可以使用Logging命令“SetVariable" 来设置一个输出变量,其值为您要将其设置为环境的值。

  3. 那么在后续的依赖于上一个作业的作业中,就可以使用输出变量了。更多详情,您可以查看“Set a multi-job output variable”.

我能够从 API 调用中触发管道传递参数(浏览器、环境),如下所示

curl -L -X POST 'https://dev.azure.com/Org/project/_apis/build/builds?definitionId-**&api-version=6.1-preview.6' -H 'Authorization: $(ADO__AUTH)' -H 'Content-Type: application/json' --data

'{“定义”:{

"编号": 825

}, “资源”:{

   "repositories": {

    "self": {

    "refName": "refs/heads/develop"

     }
   }
},

  "templateParameters": {

            "browser":"chrome",

            "environment": "Test"

} }'