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

Azure devops Azure DevOps发行版具有来自同一分支的多个工件,azure-devops,Azure Devops,我们在同一个存储库中有两个构建管道,它们是从两个不同的路径构建的 BuildPipelineA从AppRepo构建/PathA并发布工件工件 BuildPipelineB从AppRepo构建/PathB并发布工件工件b 然后,我们有一个发布管道,它使用这两个工件将应用程序部署到一些WebApps 作为一种分支策略,我们使用定制的Gitflow工作流。唯一的区别是我们有两个开发团队,每个团队都有自己的集成分支。因此基本上,我们没有使用经典的develope分支,而是使用develope、devel

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

BuildPipelineAAppRepo构建/PathA并发布工件工件

BuildPipelineBAppRepo构建/PathB并发布工件工件b

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

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

我试图实现的是有一个CI/CD流程,它总是从匹配(相同)分支获取工件,用于自动触发的发布创建

例如,给定先前的
主文件
工件b存在:

  • 对于/PathA

  • BuildPipelineA
    master

  • releasepippeline现在应该使用
    master
    ArtifactA
    master
    ArtifactB创建一个新版本

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

  • 开发人员在
    develope
    上提交对/PathB

  • BuildPipelineB
    develop

  • releasepippeline现在应该使用
    develope
    ArtifactB和(现有的)
    develope
    ArtifactA创建一个新的发行版


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

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

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

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

因为这个“组合管道”的源存储库是不相关的,所以我选择使用第二个存储库来存储用于API调用的脚本

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

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



我非常乐意接受任何建议。

长期以来一直在寻找类似的答案。。。顺便说一句,你有没有尝试过从同一个回购协议中构建ArtifactC?