Azure 管道资源分支
Azure Pipeline Resource Branch
编辑:请忽略关于 tags
的部分——正如其中一个答案所指出的,这来自设计文档,尚未完全实现。我主要关心 branch
属性.
问题
管道资源 branch
(docs) and tags
(found on GitHub 但不是文档)属性如何工作? version
属性 正确选择了资源的默认版本,但 branch
和 tags
似乎什么都不做。
我希望 branch
同样默认为最新的 运行 以该分支为源,并且 tags
默认为最新的 运行 与这些标签。是坏了还是我误解了行为?
测试
我有两条管道串联到 运行:
- 在主触发器上测试构建 运行s 或手动发布工件(尝试构建和管道工件)
- 测试发布有一个测试构建管道资源
现在我尝试了 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!
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,其中包含对该问题的完整演示记录。
编辑:请忽略关于 tags
的部分——正如其中一个答案所指出的,这来自设计文档,尚未完全实现。我主要关心 branch
属性.
问题
管道资源 branch
(docs) and tags
(found on GitHub 但不是文档)属性如何工作? version
属性 正确选择了资源的默认版本,但 branch
和 tags
似乎什么都不做。
我希望 branch
同样默认为最新的 运行 以该分支为源,并且 tags
默认为最新的 运行 与这些标签。是坏了还是我误解了行为?
测试
我有两条管道串联到 运行:
- 在主触发器上测试构建 运行s 或手动发布工件(尝试构建和管道工件)
- 测试发布有一个测试构建管道资源
现在我尝试了 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!
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,其中包含对该问题的完整演示记录。