具有来自同一分支的多个工件的 Azure DevOps 版本

Kra*_*stt 5 azure-devops

我们有两个构建管道从同一个存储库中的两个不同路径构建。

BuildPipelineA建立/ PathAAppRepo并公布神器ArtifactA

BuildPipelineB建立/ PathBAppRepo并公布神器ArtifactB

然后我们有一个发布管道,它使用这两个工件将应用程序部署到一些 WebApp。

作为分支策略,我们使用自定义 Gitflow 工作流。唯一的区别是我们有两个开发团队,每个团队都有自己的集成分支。所以基本上develop我们没有经典分支,而是有develop,develop-teamAlphadevelop-teamBeta。除了master,release/和之外,触发器设置为所有三个分支,hotfix/因此总共有六个分支是目标。

我想要实现的是建立一个 CI/CD 流程,该流程将始终从匹配(相同)分支中获取工件以进行自动触发的发布创建。

例如,假设存在先前的masterArtifactB

  • 开发人员master/PathA 中的某些文件提交更改

  • BuildPipelineA触发器和构建ArtifactAmaster

  • ReleasePipeline现在应该创建一个使用新版本masterArtifactAmasterArtifactB

即使触发工件来自不同的分支,我也希望发生同样的事情:

  • 开发人员develop/PathB 中的某些文件提交更改

  • BuildPipelineB触发器和构建ArtifactBdevelop

  • ReleasePipeline现在应该创建一个使用新版本developArtifactB和(现有)developArtifactA


尝试 1: 所以我尝试的第一件事是使用 $(Release.Artifacts.ArtifactA.SourceBranch) 作为ArtifactB的源分支:

Release.Artifacts.webapp.SourceBranch 示例

这不起作用,因为此变量取决于已选择其工件的版本。

尝试 2:我的第二次尝试是创建一个新管道,将两个工件组合在一起,同时确保它们是来自特定匹配分支的最新版本。

此构建将由BuildPipelineABuildPipelineB 中的任何一个完成触发。我使用了一些 API 调用来获取触发构建的源分支,并使用它从匹配的分支下载ArtifactAArtifactB,然后发布新的、组合的ArtifactC

由于此“组合管道”的源存储库无关紧要,因此我选择使用第二个存储库,在其中存储用于 API 调用的脚本。

现在通过这样做,我无法控制用于从ArtifactC(组合工件)创建新版本的分支,因为该工件的源始终来自第二个存储库的master分支。这也让我失去了 Azure DevOps 提供的所有可追溯性。下面的例子可能会让事情更清楚:

神器C

此外,它根本不会与我们用于每个不同环境的工件过滤设置集成。


我很乐意接受任何建议。

小智 0

您可以创建多个发布管道,每个环境一个,具有相同的任务和阶段,但分支选择和部署过滤器不同(带有 prods 分支的产品发布管道)。但后期维护起来并不容易。

我还尝试使用 $(Build.SourceBranchName) 作为源分支,但没有成功 捕获

即使使用预先设置的自定义变量。 捕获2