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

问题描述 投票:0回答:2

我正在开发 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
azure-devops parameters cron conditional-statements scheduled-tasks
2个回答
2
投票

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

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

  1. 执行API“Builds - Get”,如果构建运行是由计划触发器触发的,从API调用的Response中,您可以获取计划触发器的名称(

    triggerInfo.scheduleName
    ) 。在您的情况下,名称为“7PM CST - SAT”或“9PM CST - SAT”。

  2. 根据 API 调用返回的“

    scheduleName
    ”,您可以使用 Logging 命令“SetVariable”来设置输出变量,其值为您想要将其设置为环境的值。

  3. 然后在依赖于前一个作业的后续作业中,您可以使用输出变量。更多详情,请参阅“设置多作业输出变量”。


0
投票

我能够从 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"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.