如何在不使用触发器的情况下将管道限制到特定分支?

Dav*_*eny 4 azure-devops

如何限制 Azure DevOps 中的按需(即不触发)管道,使其仅在特定分支上运行?

例如,我有一个管道(使用较新的 YAML 语法),它只能在分支上运行master,因为它用于将代码推送到生产环境,并且只能由某些开发人员运行(我们处理大量 PII 数据,因此我们的审计控制要求相当高)。我有另一个管道,应该在除 之外的 master任何分支上运行,因为它用于将代码推送到集成/测试环境,并且可以由任何人运行。

如果我指定了一个触发器,我可以告诉它只在某些分支上触发;但如果我trigger: none在 YAML 中设置,则无法应用这些限制。有任何想法吗?

小智 8

我遇到这个线程是因为我有同样的要求。就我而言,我想将管道限制为releases/ *分支。如果有帮助的话,我所做的是在舞台上提出一个条件:

trigger:
  branches:
    include:
    - releases/*

...

- name: isReleasesBranch
  value: $[startsWith(variables['Build.SourceBranchName'], 'releases/')]

...

stages:
- stage: Production
  displayName: 'Production Deploy'
  dependsOn: QA
  condition: and(succeeded(), or(variables.isReleasesBranch))

...

Run Code Online (Sandbox Code Playgroud)

  • 我建议对此解决方案进行一项更改;也许添加一个 powershell 任务来检查 isReleaseBranch 变量,如果它无效,则显式地使管道失败。这样,从错误分支运行管道的人就可以获得错误的直接反馈。 (2认同)