如何在Azure依赖构建管道中排除PR构建作为资源
Azure DevOps管道排除PR构建作为依赖资源的方案
方法1:在App2的YAML管道资源声明中直接过滤
这是最推荐的方案,直接在App2的管道定义里声明App1资源时,通过分支规则排除所有PR触发的构建:
resources: pipelines: - pipeline: App1_Build_Resource # App1资源的自定义别名 source: App1_Official_Pipeline # 替换为你Azure DevOps组织中App1管道的实际名称 trigger: branches: # 仅包含你需要的目标分支,可按需添加多个 include: - main - develop # 排除所有PR相关的构建分支,Azure DevOps PR构建的分支路径统一为refs/pull/*格式 exclude: - refs/pull/*
如果你们通过标签区分正式构建,也可以增加标签过滤规则,仅引用带指定标签的App1构建:
resources: pipelines: - pipeline: App1_Build_Resource source: App1_Official_Pipeline trigger: tags: include: - OfficialBuild # 仅App1构建带这个标签时才会被App2引用
方法2:在App1侧限制PR构建对外暴露
你也可以直接在App1的管道逻辑中,禁止PR触发的构建发布可供下游引用的产物,从源头上避免被App2拉取:
- task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'App1_Release_Output' # 仅当构建原因不是拉取请求时,才执行产物发布步骤 condition: ne(variables['Build.Reason'], 'PullRequest')
方法3:经典可视化编辑器管道配置
如果你使用的是传统的可视化编辑器而非YAML定义管道:
- 打开App2的管道编辑页面,找到依赖的App1构建资源配置项
- 在分支过滤规则的排除栏中填入
refs/pull/* - 或者在构建原因过滤配置中,排除「拉取请求」类型的构建
内容的提问来源于stack exchange,提问作者Luc van Vugt
相关产品推荐
相关产品推荐

