我们有两个构建管道从同一个存储库中的两个不同路径构建。
BuildPipelineA建立/ PathA从AppRepo并公布神器ArtifactA
BuildPipelineB建立/ PathB从AppRepo并公布神器ArtifactB
然后我们有一个发布管道,它使用这两个工件将应用程序部署到一些 WebApp。
作为分支策略,我们使用自定义 Gitflow 工作流。唯一的区别是我们有两个开发团队,每个团队都有自己的集成分支。所以基本上develop我们没有经典分支,而是有develop,develop-teamAlpha和develop-teamBeta。除了master,release/和之外,触发器设置为所有三个分支,hotfix/因此总共有六个分支是目标。
我想要实现的是建立一个 CI/CD 流程,该流程将始终从匹配(相同)分支中获取工件以进行自动触发的发布创建。
例如,假设存在先前的masterArtifactB:
开发人员master为/PathA 中的某些文件提交更改
BuildPipelineA触发器和构建ArtifactA从master
该ReleasePipeline现在应该创建一个使用新版本masterArtifactA和masterArtifactB
即使触发工件来自不同的分支,我也希望发生同样的事情:
开发人员develop为/PathB 中的某些文件提交更改
BuildPipelineB触发器和构建ArtifactB从develop
该ReleasePipeline现在应该创建一个使用新版本developArtifactB和(现有)developArtifactA
尝试 1: 所以我尝试的第一件事是使用 $(Release.Artifacts.ArtifactA.SourceBranch) 作为ArtifactB的源分支:

这不起作用,因为此变量取决于已选择其工件的版本。
尝试 2:我的第二次尝试是创建一个新管道,将两个工件组合在一起,同时确保它们是来自特定匹配分支的最新版本。
此构建将由BuildPipelineA或BuildPipelineB 中的任何一个完成触发。我使用了一些 API 调用来获取触发构建的源分支,并使用它从匹配的分支下载ArtifactA和ArtifactB,然后发布新的、组合的ArtifactC。
由于此“组合管道”的源存储库无关紧要,因此我选择使用第二个存储库,在其中存储用于 API 调用的脚本。
现在通过这样做,我无法控制用于从ArtifactC(组合工件)创建新版本的分支,因为该工件的源始终来自第二个存储库的master分支。这也让我失去了 Azure DevOps 提供的所有可追溯性。下面的例子可能会让事情更清楚:

此外,它根本不会与我们用于每个不同环境的工件过滤设置集成。
我很乐意接受任何建议。
| 归档时间: |
|
| 查看次数: |
858 次 |
| 最近记录: |