Azure Pipelines - 处理依赖下游管道的构建

Azure Pipelines - Handling builds for Dependent downstream pipelines

我们有更多的通用上游管道——pipleline-a、pipleline-b、pipeline-c、pipeline-d……每个都在自己的存储库中——repository-a、repository-b、repository-c、repository- … 我的目标管道,比如 repository-y 中的 pipeline-y,依赖于这些上游管道工件,当任何上游库发生更改并且相应的上游管道成功构建时,目标管道需要构建。 换句话说,如果任何上游管道由于它们的变化而成功完成,则需要触发目标管道-y(CI 上游库的触发器在它们自己的管道中工作正常)。

我们目前实现了这一点,使用目标管道-y 中的资源管道触发器,如下所示:

上游管道-管道-a.yml

trigger:

- repository-a*

steps

- task: Maven@3
  inputs:
  mavenPomFile: 'pom.xml'
  publishJUnitResults: false
  javaHomeOption: 'JDKVersion'
  mavenVersionOption: 'Default'
  mavenAuthenticateFeed: true
  effectivePomSkip: false
  sonarQubeRunAnalysis: false
  goals: 'package deploy'
  

目标管道-y.yml资源部分

resources:
pipelines:

- pipeline: pipeline-a
  source: pipeline-a
  trigger:
  branches:
  - 'pipeline-a-v1*'
- pipeline: pipeline-b
  source: pipeline-b
  trigger:
  branches:
  - 'pipeline-b-v1*'
- pipeline: pipeline-c
  source: pipeline-c
  trigger:
  branches:
  - 'pipeline-c-v1*'
- pipeline: pipeline-d
  source: pipeline-d
  trigger:
  branches:
  - 'pipeline-d-v1*'
- pipeline: pipeline-e
  source: pipeline-e
  trigger:
  branches:
  - 'pipeline-e-v1*'

这很好用。

我的问题是,随着我们添加更多上游公共库,我们必须更新目标下游中的资源部分。当上游库有新版本时,我们必须修改 resources-pipelines-pipiline-trigger - branches 从“pipeline-a-v1”到“pipeline-a-v2”中的版本。

有更好的方法吗?可以在 resources-pipelines-pipeline-trigger - branches - example pipeline-a-$(version) 中使用变量。可以使用 Build 系统变量派生版本,如下所示:

我试过了

变量: 版本:$[replace(variables['Build.SourceBranchName'], variables['Build.Repository.Name'], '')]

好像没用。

无法在 YAML 中动态指定资源。

一个建议是在添加新管道时使用 REST API 挂钩。然后触发一个程序,为 pipeline-y.yml.

生成新的 YAML