我正在开发 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
还检查了不满足我的需求的策略选项,我不能有一个新作业来使用如下参数进行计划运行,因为该管道需要可供用户根据环境选择来触发,如果我指定作业/任务不会触发的这些条件。
pool:
vmImage: '**'
strategy:
matrix:
Run1:
myvar: 12
Run2:
myvar: 14
Run3:
myvar: 16
我们似乎没有方法在管道运行期间自动动态地更改参数的值。
作为解决方法,您可以尝试设置以前的作业并在此作业中添加以下步骤:
执行API“Builds - Get”,如果构建运行是由计划触发器触发的,从API调用的Response中,您可以获取计划触发器的名称(
triggerInfo.scheduleName
) 。在您的情况下,名称为“7PM CST - SAT”或“9PM CST - SAT”。
根据 API 调用返回的“
scheduleName
”,您可以使用 Logging 命令“SetVariable”来设置输出变量,其值为您想要将其设置为环境的值。
然后在依赖于前一个作业的后续作业中,您可以使用输出变量。更多详情,请参阅“设置多作业输出变量”。
我能够从 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
{
"definition": {
"id": 825
},
"resources": {
"repositories": {
"self": {
"refName": "refs/heads/develop"
}
}
},
"templateParameters": {
"browser": "chrome",
"environment": "Test"
}
}