编辑:请忽略有关tags
的部分-指出的答案之一,这来自设计文档,尚未完全实现。我主要关心的是branch
属性。
管道资源branch
(docs)和tags
(found on GitHub但不是docs)属性如何工作? version
属性正确选择了资源的默认版本,但是branch
和tags
似乎无能为力。
我希望branch
同样默认为以该分支为源的最新运行,而tags
默认为具有这些标记的最新运行。是坏了还是我误会了行为?
我有两个串联运行的管道:
现在我尝试了3种不同的测试:
version
属性。成功:资源正确选择了该版本。branch
属性。失败:default resource will be the latest, even if from a different branch. 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!
答案 0 :(得分:0)
Azure管道资源分支
的确,我也可以在自己的身边重现此问题。那是因为该文档是设计文档。
您可以检查that doc中的标题:
此回购中的设计文档是在以下期间的不同时间创建的 开发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分支:
在这种情况下,我们可以使分支功能正常工作。
答案 1 :(得分:0)
经过大量测试,我想我真的想通了。
我认为这纯粹是一个UI错误。 UI将显示所选的最新版本,即使它来自其他分支。但是,如果在不手动更改选择的情况下继续运行管道,则尽管它在UI中显示了不同的默认选择,它仍将正确地使用来自正确分支的最新版本。
正如Leo Liu-MSFT所指出的那样,tags
属性来自设计文档,并且尚未完全实现。
我打开了一个问题here,并记录了该问题的完整记录。