我有一个非常简单的管道,它有一个1 个阶段和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'
我不知道原因。我尝试了不同的条件 The job was skipped.
我也试过在有条件的阶段之前有另一个阶段。
eq(variables['Build.Reason'], 'Schedule')
我看过微软的 documentation。
答案 0 :(得分:1)
要使管道不通过推送触发,请添加 trigger: none
。更多信息here。
对于跳过的工作,您似乎已经找到了答案,但作为参考,当GUI settings override YAML时可能会发生这种情况,需要注意。
答案 1 :(得分:0)
解决方案是
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"'
trigger: none
添加为 @psfinaki 提到的,这样作业就不会在提交时运行condition
全部删除。如果有多个阶段,那么这些甘蔗就会有条件地作为目标。