Azure 管道资源分支

Azure Pipeline Resource Branch

编辑:请忽略关于 tags 的部分——正如其中一个答案所指出的,这来自设计文档,尚未完全实现。我主要关心 branch 属性.


问题

管道资源 branchdocs) and tags (found on GitHub 但不是文档)属性如何工作? version 属性 正确选择了资源的默认版本,但 branchtags 似乎什么都不做。

我希望 branch 同样默认为最新的 运行 以该分支为源,并且 tags 默认为最新的 运行 与这些标签。是坏了还是我误解了行为?

测试

我有两条管道串联到 运行:

现在我尝试了 3 种不同的测试:

  1. 在资源上指定 version 属性。成功:资源正确选择了该版本。
  2. 在资源上指定 branch 属性。失败:default resource will be the latest, even if from a different branch.
  3. 在资源上指定 tags 属性。失败:默认资源将是最新的,即使没有这些标签。

示例文件

测试构建

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Pipeline.Workspace)'
    artifact: 'drop'
    publishLocation: 'pipeline'

测试版

trigger: none

resources:
  pipelines:
  - pipeline: TestBuild
    source: Test-Build
    branch: master

jobs:
- deployment: TestDeployment
  environment: Test
  pool:
    vmImage: 'ubuntu-latest'
  strategy:
    runOnce:
      deploy:
        steps:
        - script: echo Deploying!

Azure Pipeline Resource Branch

确实,我也可以在我这边重现这个问题。那是因为该文档是 Design Docs.

您可以查看that doc标题:

The design docs within this repo are created at different times during the development of Azure Pipelines, to support collaborative contributions to the design process. Designs documents are for,

  • features considered for implementation but never implemented
  • already implemented features
  • future ideas for features

The design docs in this repo may not represent the current state of an Azure Pipelines feature.

很明显,这是一个尚未完全实现的功能。这就是你无法得到那份工作的原因。你可以期待它的到来,相信很快就会和我们见面。

更新:

我测试了这个 Branch 功能,但似乎与我们的预期有差距。

一开始,我得到的结果和你一样。默认资源将是最新的,即使来自不同的分支。然后我再次查看文档,发现:

When you define a resource trigger, if its pipeline resource is from the same repo as the current pipeline, triggering follows the same branch and commit on which the event is raised. But if the pipeline resource is from a different repo, the current pipeline is triggered on the default branch.

Default branch for triggers

Triggers for resources are created based on the default branch configuration of your YAML, which is master. However, if you want to configure resource triggers from a different branch, you need to change the default branch for the pipeline.

所以,让它发挥作用。我为不同的分支创建了两个 Test-Release yml 文件:

主分支:

trigger: none

    resources:
      pipelines:
      - pipeline: TestBuild
        source: Test-Build
        branch: master

开发分支:

trigger: none

    resources:
      pipelines:
      - pipeline: TestBuild
        source: Test-Build
        branch: Dev

而且我们必须手动更改管道的手动和计划构建的默认分支 Test-Release:

在这种情况下,我们可以使 Branch 功能正常工作。

经过大量测试,我想我真的明白了。

我认为这纯粹是一个 UI 错误。 UI 将显示所选的最新版本,即使它来自不同的分支。但是,如果您在不手动更改选择的情况下继续 运行 管道,那么它将正确使用来自正确分支的最新版本,尽管它在 UI 中显示了不同的默认选择。

正如 Leo Liu-MSFT 指出的那样,tags 属性 来自设计文档,尚未完全实现。

我打开了一个问题 here,其中包含对该问题的完整演示记录。