gpt4 book ai didi

azure-devops - 在 Azure Devops 中作为拉取请求分支策略的一部分运行顺序构建管道

转载 作者:行者123 更新时间:2023-12-05 05:01:26 25 4
gpt4 key购买 nike

我在 Azure Devops 中有两个管道:

管道 A 触发对 master 的提交并生成一组工件

管道 B 在管道 A 成功完成时触发并使用其工件

这一切都正常工作,只需正常提交到 master,但是,如果我创建一个分支验证策略,将拉取请求强制执行到 master 以成功运行管道 A,管道 A 的 PR 预合并运行永远不会触发管道 B(我希望它也为 PR 做,但它的成功对于 PR 来说只是可选的)。

如果我直接将流水线 B 添加为第二个分支验证(作为可选验证),它会与流水线 A 同时运行,但流水线 B 不会使用正确的工件,因为它没有被它应该使用的运行触发来自,而只是从它希望从中下载的管道资源中提取最新可用的工件(这会导致竞争条件,因为当管道 B 与管道 A 同时运行时,它将始终首先完成,因此它会下载 N-1 个工件)。

我期望的工作是:

在管道 B yaml 中:

resources:
pipelines:
- pipeline: pipelineA
source: PipelineA
trigger:
branches:
include :
- '*'

然后在分支策略中为管道 A 添加分支验证,并为管道 B 添加状态检查,要检查的状态为“VSTS-RM/PipelineA”。但它永远不会一直正确触发。

基本上我想做的是这个 https://www.linkedin.com/pulse/end-to-end-pull-request-azure-devops-olivier-l%C3%A9ger其中管道 B 只是另一个 yml 构建管道,而不是发布管道。

目前无法使用两个构建管道来执行此操作吗?

最佳答案

Run Sequential Build Pipelines as part of Pull Request Branch Policy in Azure Devops

如果您想添加 Pipeline APipeline B 作为分支验证,并且 Pipeline B 使用 Pipeline A 的工件,这样做Azure devops 似乎还不支持。

原因:

Pipeline B单独作为分支验证时,会在PR请求发出后立即启动。如果Pipeline B不作为分支验证,就像完成Pipeline A一样,分支验证将不包括Pipeline B之后>Pipeline A完成,PR会继续,不会等待验证Pipeline B

解决方法:

我们可以将 Pipeline B 作为 Pipeline A 中的一个作业添加:

stages:
- stage: PipelineA
jobs:
- job: PipelineA
displayName: PipelineA
pool:
name: xxx
steps:
...

- stage: PipelineB
jobs:
- job: PipelineB
displayName: PipelineB
pool:
name: xxx
steps:
- download: current
artifact: XX

在这种情况下,我们只需要添加流水线A作为分支验证。

请查看文档StagePublish and download artifacts了解更多详情。

希望这对您有所帮助。

关于azure-devops - 在 Azure Devops 中作为拉取请求分支策略的一部分运行顺序构建管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62706002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com