You can use branch patterns to ensure pipelines are only triggered when necessary. This guide shows you how to set up branch patterns for whole pipelines and individual build steps.
In step-level and pipeline-level branch filtering you can use
* as a wildcard, and
! for not, as shown in the examples. If you want a full range of regular expressions that operate on more than branch names, take a look at the conditionals page.
Pipeline-level branch filtering
By default a pipeline will trigger builds for all branches (
* or blank). In your pipeline settings you can set specific branch patterns for the entire pipeline. If a commit doesn't match the branch pattern, no build will be created.
Pull Request Builds
Builds created for pull requests will ignore any pipeline-level branch filters. If you want to limit the branches that can build pull requests, add an additional branch filter in your pipeline's source control settings.
This filter can be found under 'Build pull requests' if you have chosen the 'Trigger builds after pushing code' option.
Step-level branch filtering
As with pipeline-level branch filtering, you can set branch patterns on individual steps. Steps that have branch filters will only be added to builds on branches matching the pattern.
For example, this
pipeline.yml file demonstrates the use of different branch filters on its steps:
Step-level branch filters will only affect the step that they are added to. Subsequent steps without branch filters will still be added to the pipeline.
Branch pattern examples
When combining positive and negative patterns, any positive pattern must match, and every negative pattern must not match.
The following are examples of patterns, and the branches that they will match:
!productionwill match any branch that's not
master features/*will match
masterand any branch that starts with
*-testwill match any branch ending with
-test, such as
stages/* !stages/productionwill match any branch starting with
stages/production, such as
v*.0will match any branch that begins with a
vand ends with a
.0, such as
v* !v1.*will match any branch that begins with a
vunless it also begins with
v1., such as
v2.3, but not
For more advanced step filtering, see the Using conditionals guide.