【问题标题】:Azure pipeline skips scheduled jobAzure 管道跳过计划的作业
【发布时间】:2021-06-08 12:09:02
【问题描述】:

我有一个非常简单的 管道,它有一个 1 个阶段1 个工作 打印 Hello World .

我希望舞台仅根据时间表触发(而不是在我推送时)。

schedules:
- cron: "*/5 * * * *"
  displayName: Run every 5 Mins
  branches:
    include:
    - main
  always: true  

stages:
- stage: BatchRun
  displayName: Batch Run
  condition: and(always(), eq(variables['Build.Reason'], 'Schedule'))
  jobs:
  - job: Echo
    steps:
    - script: 'Hello World'

目前有2个问题

  1. 按下时会触发舞台。
  2. 作业被跳过并显示一条消息The job was skipped. 我不知道为什么。

我尝试过不同的条件eq(variables['Build.Reason'], 'Schedule')

我也尝试过在有条件的阶段之前有另一个阶段。

- stage: A
  jobs:
  - job: A1
    steps:
      - script: echo Hello Stage A!

我看过微软的documentation

【问题讨论】:

  • 我猜跳过是由于 ADO 没有将运行识别为计划,因为它听起来像是每次推送都会停止。您要推送的分支是主分支还是其他分支?
  • @DreadFrost 在 master 上,如果作业按计划识别,有什么方法可以检查(日志)或其他方式?
  • 您的管道正在寻找main 如果您想在管道运行后进行检查,请单击汉堡菜单并下载日志。有一个 azure-pipelines.expanded.yaml 文件
  • 我在捂脸,复制和粘贴的副作用,刚刚更正,我的第二阶段现在正在运行,将等待 5 分钟后它是否会再次运行。还会检查当我有另一个提交时会发生什么,谢谢。稍后会在这里更新。
  • 在默认值从 master 切换到 main 后,我的管道也遇到了同样的问题 :)

标签: azure-devops conditional-statements azure-pipelines scheduled-tasks azure-pipelines-yaml


【解决方案1】:

要使管道不通过推送触发,请添加trigger: none。更多信息here.

至于被跳过的工作,你好像找到了答案,不过作为参考,GUI settings override YAML时可能会出现这种情况,要注意了。

【讨论】:

    【解决方案2】:

    解决办法是

    trigger: none
    
    schedules:
    - cron: "*/5 * * * *"
      displayName: Run every 5 Mins
      branches:
        include:
        - main
      always: true  
    
    stages:
    - stage: BatchRun
      displayName: Batch Run
      jobs:
      - job: Echo
        steps:
        - script: 'echo "Hello World"'
    
    1. 添加trigger: none 就像@psfi​​naki 提到的那样,作业不会在提交时运行
    2. 由于在此示例中我只有一个阶段,我将condition 全部删除。如果有多个阶段,那么这些手杖将根据条件进行定位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 2020-01-30
      • 2020-09-16
      • 1970-01-01
      • 2021-09-17
      • 2020-10-22
      • 1970-01-01
      相关资源
      最近更新 更多