Azure Pipeline 多阶段中针对特定阶段的预定触发器

Scheduled trigger in Azure Pipeline multistage for a spesific stage

我在 Azure DevOps 上有一个多阶段管道,我想每晚触发其中一个阶段,但其他阶段将由 GitHub 存储库的更改触发。 我想知道是否可以只对一个阶段使用预定触发器,如果​​可以的话如何?正如我在 google 中发现的那样,它似乎只适用于整个管道。 怎么可能在特定的日期和时间只触发一个阶段?

这是管道的样子:

name: Pipeline

trigger:
  branches:
    include:
      - master
      - refs/tags/v*

variables:

resources:
  repositories:

stages:
 - stage: Build
   jobs:
   - job: Build
     steps:

     pool:
       vmImage: 'ubuntu-latest'

 - stage: Deploy_Dev
   variables:

   jobs:
   - steps:

###Nightly triggered

 - stage: Deploy_Test
   variables:

   jobs:
   - steps:

I'm wondering if it is possible to use scheduled trigger for only one Stage, if so how? as I found in google, it seems it is only for entire pipeline. How is it possible to trigger only one Stage in a specific day and time?

恐怕没有这种开箱即用的方法可以实现。如您所知,它仅适用于整个管道。

作为此问题的解决方法,您可以为此管道设置UI 已定义的预定触发器:

然后为Deploy_Test阶段的作业添加一个custom condition

 - stage: Deploy_Test
   jobs:      
   - job:
     condition: and(always(), eq(variables['Build.Reason'], 'Schedule'))
     steps:

在这种情况下,该阶段仅在计划触发器触发构建时执行。如果构建是由 GitHub repo 中的更改触发的,将跳过 Deploy_Test 阶段:

注意:此解决方法的局限性在于,当您的管道被计划的触发器触发时,阶段 buildDeploy_Dev 也会执行。

希望对您有所帮助。