根据“触发”分支过滤VSTS构建工件以进行发布

时间:2018-12-30 07:25:27

标签: azure-devops azure-pipelines

上下文:

我在同一个Azure DevOps Git存储库中有两个YAML生成定义。 YAML文件位于单独的文件夹component1component2上,基于路径过滤生成触发器。这是YAML文件:

文件夹component1中的第一个文件:

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

我还有一个由两个工件触发的Release管道,并部署了这两个工件中的最新工件。

enter image description here

enter image description here

我的目标:

我要实现的是自动创建发行版时,我希望过滤工件,以便该发行版使用源自“触发”分支的最新工件。

所以,如果我按顺序排列它,它将像这样:

  1. 我在component1分支的master中更改文件。
  2. 将启动component1构建定义并基于master分支创建工件。
  3. 由于在步骤2中创建了工件,因此触发了发布管道,并且对于两个工件
  4. ,用于此发行版的工件都是源自master分支的最新版本

然后我按以下顺序进行操作:

  1. 我在component2分支的release中更改文件。
  2. 将启动component2构建定义并基于release分支创建工件。
  3. 由于在步骤2中创建了构件,因此触发了发布管道,并且此发布中使用的构件是源自release分支的最新版本。对于这两个工件,不是最新序列中的最新序列。

问题/问题:

到目前为止,似乎没有选项可以动态选择源分支。我试图在“默认版本”字段中使用$(Release.Artifacts.{Artifact alias}.SourceBranchName)变量,但这不会触发发布。

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

0 个答案:

没有答案