是否可以使用一个管道并将其安排到存储库中以“release”开头的所有分支?
我的场景:
一个存储库 - TestRepo。
TestRepo 的多个发布分支:release/alpha、release/beta、release/charlie 等。
在任何给定点,我都会存在多个发布分支。
我现在使用一个可行的解决方法,使用下面的 YAML 文件,其中我将包含的分支设置为 release/X 并为每个分支更新它。因此每个分支都有自己的 YAML 文件和自己的管道。除此之外,我还必须更改每个管道的经典编辑器中的默认分支以使用新的发布分支。
我在这里查看了有关分支的部分,但这对我不起作用(因为在“计划运行”视图中只考虑了一个分支):https://learn.microsoft.com/en-us/ azure/devops/pipelines/process/scheduled-triggers?view=azure-devops&tabs=yaml#branch-considerations-for-scheduled-triggers
我感谢任何帮助,谢谢。
trigger: none
pr: none
pool:
name: <REDACTED>
demands:
- agent.name -equals <REDACTED>
schedules:
- cron: '0 0 * * *' # The time zone for cron schedules is UTC and Sweden is UTC+1.
displayName: Daily nightly build for Sonarqube (code coverage %, general statistics and the dependency-check report)
branches:
include:
- release/alpha # This needs to be updated for every release branch.
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'
您可以在 yaml 中定义多个 cron 计划,如下所示:
trigger: none
pr: none
schedules:
- cron: '*/1 * * * *'
displayName: Trigger every 1 minutes test
branches:
include:
- main
always: true
- cron: '*/2 * * * *'
displayName: Trigger every 2 minutes test
branches:
include:
- testSchedule
always: true
steps:
- script: echo Hello world!
displayName: Say hello
我已经对此进行了测试,设置时需要注意一些注意事项。
注意事项#1:您不得通过经典用户界面配置计划运行 - 这将覆盖 yaml 配置。经典的配置菜单隐藏在多个菜单后面。要导航到此处,请在管道上选择
Edit
,然后选择 ⋮
菜单并单击 Triggers
。此页面上有一个名为 Scheduled
的部分。如果此处存在任何计划,您必须先将其删除。您需要从 Sync schedules
屏幕中按 Schedules runs
才能让管道从 yaml 中读取计划(如果这些计划确实存在)(请参阅此消息底部的说明)。如果您更喜欢在这里管理计划而不是 yaml,您也可以这样做,但我建议坚持使用 yaml。
注意事项#2:创建管道后,每个分支都需要一次新的提交,以便在计划中检测到它。
注意事项 #3:每个分支应包含具有相同计划配置的 yaml 文件,以便触发它(从技术上讲,它不需要相同的配置,但它至少应该包含其自身)。 阅读有关配置计划的 Microsoft 文档以了解更多详细信息。
您可以通过选择
⋮
菜单并单击 Scheduled runs
来查看计划的运行。这里还有一个 Sync schedules
按钮,可以让管道使用 yaml 中的计划而不是经典的 UI。