如何在Azure DevOps构建管道中区分分支触发器和计划触发器

时间:2020-04-19 17:19:58

标签: azure azure-devops azure-pipelines azure-pipelines-build-task azure-pipelines-yaml

我想在构建管道中为分支触发器和计划的触发器运行不同的作业。

branch trigger => run job 1

scheduled trigger => run job 2

有什么办法可以区分触发器?这样我就可以根据不同的条件来工作。

我的思考过程

我正在考虑在计划的触发器中设置变量,因此我可以在工作条件评估中使用该变量。但是我无法设置变量。

# Sample azure-build-pipeline.yml file


variables:

# by default the variable is false
  isScheduledTrigger: false


trigger:
  - develop
  - master

schedules:
  - cron: "0 0 * * *"
    displayName: Daily midnight build
    branches:
      include:
        - develop
    always: true
# somewhere here i want to set the isScheduledTrigger variable to TRUE

jobs:
 - job: Branch trigger job
   condition: or(eq(variables['Build.SourceBranchName'], 'develop'),eq(variables['Build.SourceBranchName'], 'master'))
   steps:
# Multiple steps for branch trigger



- job: Scheduled trigger job
   condition: and(eq(variables['Build.SourceBranchName'], 'develop'),eq(variables['isScheduledTask'], True))
   steps:
# Multiple steps for scheduled trigger


1 个答案:

答案 0 :(得分:2)

您可以使用名为Reason的变量来区分Trigger的类型

condition: and(succeeded(), and(not(eq(variables['Build.Reason'], 'PullRequest')), not(eq(variables['Build.Reason'], 'Schedule'))))