Azure管道资源分支

时间:2020-07-14 22:20:48

标签: azure-pipelines azure-pipelines-yaml

编辑:请忽略有关tags的部分-指出的答案之一,这来自设计文档,尚未完全实现。我主要关心的是branch属性。


问题

管道资源branchdocs)和tagsfound on GitHub但不是docs)属性如何工作? version属性正确选择了资源的默认版本,但是branchtags似乎无能为力。

我希望branch同样默认为以该分支为源的最新运行,而tags默认为具有这些标记的最新运行。是坏了还是我误会了行为?

测试

我有两个串联运行的管道:

  • 测试构建在主触发器上运行或手动运行,并发布工件(尝试了Build和Pipeline工件)
  • 测试发布具有测试构建管道资源

现在我尝试了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!

2 个答案:

答案 0 :(得分:0)

Azure管道资源分支

的确,我也可以在自己的身边重现此问题。那是因为该文档是设计文档。

您可以检查that doc中的标题

enter image description here

此回购中的设计文档是在以下期间的不同时间创建的 开发Azure管道以支持协作 对设计过程的贡献。设计文件适用于

  • 已考虑实现但从未实现的功能
  • 已实现的功能
  • 功能的未来想法

此存储库中的设计文档可能不代表Azure Pipelines功能的当前状态。

很明显,此功能尚未完全实现。那就是为什么您无法获得该工作的原因。您可以期待它的到来,我相信它将很快与我们见面。

更新

我测试了此Branch功能,但是我们期望的之间似乎存在差距。

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

定义资源触发器时,如果其管道资源来自 与当前管道相同的回购,触发遵循相同 分支并提交引发事件的事件。但是如果管道 资源来自其他仓库,则触发当前管道 在默认分支上。

触发器的默认分支

基于资源创建触发器 在您的YAML的默认分支配置上,即主服务器。 但是,如果要从其他位置配置资源触发器 分支,您需要更改管道的默认分支。

因此,使其工作。我为不同的分支创建了两个Test-Release yml文件:

主分支:

trigger: none

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

Dev分支:

trigger: none

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

我们还必须手动更改管道Test-Release的手动和计划构建的Default分支:

enter image description here

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

答案 1 :(得分:0)

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

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

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

我打开了一个问题here,并记录了该问题的完整记录。