Azure DevOps:能否用单个计划管道覆盖所有release开头分支?
如何用单个Azure DevOps计划管道定时运行所有release开头的分支任务
可以通过分支通配符实现,无需为每个release分支单独创建管道或修改YAML配置,具体方案如下:
修改后的YAML配置
将原配置中schedules部分的分支包含规则改为通配符release/*,即可匹配所有以release/开头的分支:
trigger: none pr: none pool: name: <REDACTED> demands: - agent.name -equals <REDACTED> schedules: - cron: '0 0 * * *' # 定时任务时区为UTC,瑞典时区需注意偏移 displayName: Daily nightly build for Sonarqube (code coverage %, general statistics and the dependency-check report) branches: include: - release/* # 通配符匹配所有release/开头的分支,新增分支无需修改此处 always: true stages: - stage: InstallJava jobs: - job: workspace: clean: all steps: - task: CmdLine@2 inputs: script: | dir pwd mvn -version java -version export JAVA_HOME='/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64' - task: Maven@4 inputs: mavenPomFile: 'pom.xml' goals: 'dependency-check:check' publishJUnitResults: false javaHomeOption: 'path' jdkDirectory: '/usr/lib/jvm/java-11-openjdk' mavenVersionOption: 'Default' mavenAuthenticateFeed: false effectivePomSkip: false sonarQubeRunAnalysis: false - task: CmdLine@2 inputs: script: | dir pwd - task: SonarQubePrepare@5 inputs: SonarQube: <REDACTED> scannerMode: 'Other' extraProperties: | sonar.branch.name=$(Build.SourceBranchName) - task: Maven@4 inputs: mavenPomFile: 'pom.xml' goals: 'clean install' publishJUnitResults: false javaHomeOption: 'path' codeCoverageToolOption: 'JaCoCo' jdkDirectory: '/usr/lib/jvm/java-11-openjdk' mavenVersionOption: 'Default' mavenAuthenticateFeed: false effectivePomSkip: false sonarQubeRunAnalysis: true - task: SonarQubePublish@5 inputs: pollingTimeoutSec: '300'
关键注意事项
- 通配符匹配逻辑:
release/*会匹配所有以release/为前缀的分支(如release/alpha、release/beta等),后续新增的release分支会自动被纳入定时任务范围,无需修改管道配置。 - 管道默认分支设置:建议将管道的默认分支设置为一个长期稳定的分支(如main),这样计划任务会从默认分支读取最新的YAML配置,同时针对所有匹配的release分支执行任务。
- 计划视图显示:配置完成后,计划运行视图不会列出所有匹配的分支,但实际会按定时规则对每个符合条件的分支执行任务,可以通过查看管道运行历史确认各分支的执行情况。
内容的提问来源于stack exchange,提问作者Rattletrap
相关产品推荐
相关产品推荐

