Azure devops 过滤VST构建人工制品,用于基于“at”的发布;触发“;分支

Azure devops 过滤VST构建人工制品,用于基于“at”的发布;触发“;分支,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,上下文: 我在同一个Azure DevOps Git repo中有两个YAML构建定义。YAML文件位于不同的文件夹component1和component2,构建触发器根据路径进行过滤。以下是YAML文件: 文件夹组件1中的第一个文件: name: 1.0$(Rev:.rr) trigger: branches: include: - master - release/* paths: include:

上下文:

我在同一个Azure DevOps Git repo中有两个YAML构建定义。YAML文件位于不同的文件夹
component1
component2
,构建触发器根据路径进行过滤。以下是YAML文件:

文件夹
组件1
中的第一个文件:

name: 1.0$(Rev:.rr)
trigger:
    branches:
        include:
        - master
        - release/*
    paths:
        include:
            - component1
resources:
    - repo: self
steps:
- task: CopyFiles@2
  displayName: My Copy Step
  inputs:
    SourceFolder: 'component1'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: Publish Artifacts
文件夹
component2
中的第二个文件:

name: 1.0$(Rev:.rr)
trigger:
    branches:
        include:
        - master
        - release/*
    paths:
        include:
            - component2
resources:
    - repo: self
steps:
- task: CopyFiles@2
  displayName: My Copy Step
  inputs:
    SourceFolder: 'component2'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: Publish Artifacts
我还有一个由这两个工件触发的发布管道,并部署这两个工件中最新的一个

我的目标:

我想要实现的是,当发布自动创建时,我想要过滤工件,以便发布使用源自“触发”分支的最新工件

如果我把它放在一个序列中,它会是这样的:

  • 我在
    master
    分支的
    component1
    中更改了一个文件
  • component1
    构建定义启动,并基于
    master
    分支创建工件
  • 由于在步骤2中创建了工件,因此触发了发布管道,并且对于这两个工件,用于此发布的工件都是源自
    master
    分支的最新版本
  • 然后我按以下顺序进行操作:

  • 我在
    release
    分支的
    component2
    中更改了一个文件
  • component2
    构建定义启动,并基于
    release
    分支创建工件
  • 发布管道是由于在步骤2中创建了工件而触发的,用于此发布的工件是源自
    发布
    分支的最新版本。对于这两个工件,不是前一个序列的最新版本
  • 问题/问题:

    到目前为止,似乎还没有动态选择源分支的选项。我尝试使用
    $(Release.Artifacts.{Artifact alias}.SourceBranchName)
    变量作为“Default version”字段,但这不会触发发布


    我的目标可行吗?如果是,怎么做?

    为什么不为每个分支使用单独的生成定义?这限制了选择从哪个分支生成的动态特性。它的刚性和高维护性。我不感兴趣。你想在这里取得什么成果?从你的抽象描述中无法确定你所做工作的价值。这种方法似乎有点复杂,需要先检查构建的源代码,然后才能轻松确定其组成部分。在我目前的情况下,有很多历史限制。尽管如此,如果我试图详细阐述;把它想象成一个微型服务回购(肮脏的字眼,我知道!)。系统由这些组件组成,每个组件都有一个作为构建管道结果的工件。在git提交级别上,这些组件应该可以很好地协同工作,但它们在工件级别上存在差异,因为我们希望分别构建每个组件;如果只更改了一个组件,我们不想构建所有组件。这是否更清楚?我会考虑使用Azure DevOps Artefacts作为组件的构建输出,然后从中包含您的项目。但这对我来说仍然没有100%的意义:)