在主题分支中创建了Azure管道yaml文件,我可以从主题分支中运行它吗?

问题描述

这可能是一个愚蠢的问题,但是我正在编写一个处理一些自动化测试的管道。我正在功能分支中开发yaml管道。是否可以在Azure Dev ops中运行此管道,还是在每次迭代中提交拉取请求并合并到master的唯一方法

解决方法

运行DevOps管道时,请选择要对其执行管道的分支。该分支中的azure-pipelines.yaml文件是默认情况下将执行的文件。因此,在上述情况下,如果主分支中有azure-pipelines.yaml文件,而功能分支中有不同版本的azure-pipelines.yaml,则执行的版本将取决于您所在的分支运行管道。

,

您可以触发从任何分支(不仅仅是master)运行管道。 您可以在trigger字段下指定您感兴趣的分支:

trigger:
  branches:
    include:
    - master
    - feature/*
    - releases/*
    exclude:
    - releases/old*

如果您查看此代码,则以上内容将触发分支master,特征文件夹内的任何分支(例如feature / yo-currentFeature)以及发布文件夹下的任何分支的构建管道。但是,如果对发行版/旧分支进行了更改,则不会运行bulid管道。 有关触发器的更多信息,请参见: https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#ci-triggers

https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#pr-triggers

一旦在触发器:分支下添加功能分支,对功能分支所做的任何提交或PR都会自动触发构建管道

(PS:不用说,但是请确保您的功能分支还包含管道yml文件)

,

您可以在所需的任何分支上定义管道,然后,如果您选择从Existing Azure Pipelines YAML file创建管道,则可以选择分支并选择以下文件:

enter image description here

另一个选择是,如果您应用了某些命名约定,则将条件添加到主构建中以仅针对功能分支运行特定阶段:

variables:
  isFeature: $[contains(variables['Build.SourceBranch'],'feature')]

stages:
- stage: A
  jobs:
  - job: A1
    steps:
      - script: echo Hello Stage A!

- stage: B
  condition: and(succeeded(),eq(variables.isFeature,true))
  jobs:
  - job: B1
    steps:
      - script: echo Hello Stage B!
      - script: echo $(isMain)