Pipeline triggers

Bitbucket allows you to run multiple pipelines by triggering them manually or by scheduling the trigger at a given time.


In the following tutorial, you’ll learn how to trigger manual pipelines or how to schedule triggers.

Before you begin

Triggers in Pipelines have the following limitations:

Run pipelines steps manually

Manual steps allow you to customize your CI/CD pipeline by making some steps run only if they are manually triggered. This is useful for items such as deployment steps, where manual testing or checks are required before the step runs.

Configure a manual step by adding trigger: manual  to the step in your bitbucket-pipelines.yml file.

Since a pipeline is triggered on a commit, you can't make the first step manual. If you'd like a pipeline to only run manually, you can set up a custom pipeline instead. Another advantage of a custom pipeline is that you can temporarily add or update values for your variables, for example, to add a version number, or supply a single-use value.

Set a manual pipelines

Any existing pipeline can also be manually run against a specific commit, or as a scheduled build.

If you want a pipeline to only run manually then use a custom pipeline. Custom pipelines do not run automatically on a commit to a branch. To define a custom pipeline, add the pipeline configuration in the  custom  section of your bitbucket-pipelines.yml file. Pipelines which are not defined as a custom pipeline will also run automatically when a push to the branch occurs.

You'll need write permission on the repository to run a pipeline manually, and you can trigger it from the Bitbucket Cloud UI.


  1. Add a pipeline to the bitbucket-pipelines.yml file. You can manually trigger a build for any pipeline build configuration included in your  bitbucket-pipelines.yml file


  1. Trigger the pipeline from Bitbucket Cloud. Pipelines can be triggered manually from either the Branches view or the Commits view in the Bitbucket Cloud interface.

Run a pipeline manually from the Branches view

  1. In Bitbucket, choose a repo and go to Branches.

  2. Choose the branch you want to run a pipeline for.

  3. Click (...) , and select Run pipeline for a branch.

  4. Choose a pipeline and click Run:

Run a pipeline manually from the Commits view

  1. In Bitbucket, choose a repo and go to Commits.

  2. Go to the Commits' view for a commit.

  3. Select a commit hash.

  4. Select Run pipeline.

  5. Choose a pipeline, then click Run:

Run a pipeline manually from the Pipelines page

  1. In Bitbucket, choose a repo and go to Pipelines.

  2. Click Run pipeline

  3. Choose branch, a pipeline, and click Run

Additionally, you can run custom pipelines manually parsing variables to the pipeline.
To enable the variables, define them under the custom pipeline that you want to enter when you run the pipeline.


Then, when you run a custom pipeline by going to Branches ⋯ Run pipeline for a branch > Custom.


On schedule

Scheduled pipelines allow you to run a pipeline at hourly, daily or weekly intervals.

  • Scheduled pipelines run in addition to any builds triggered by commits, or triggered manually.

  • You can create a schedule for any pipeline defined in your bitbucket-pipelines.yml file.

  • If you make a custom pipeline it will only run when scheduled or manually triggered.


Create a pipeline

  1. Here's a simple example showing how you would define a custom pipeline in the bitbucket-pipelines.yml file.


Read more about custom pipelines.

Create a schedule for your pipeline

  1. Go to the repository in Bitbucket.

  2. Click Pipelines then Schedules (at the top right), and then click New schedule.

  3. Choose the Branch and Pipeline that you want to schedule:

    • The schedule will run the HEAD commit of the branch.

    • The pipeline must be defined in the bitbucket-pipelines.yml on the branch you selected.  

  4. Set the Schedule:

    • Select how often you would like the pipeline to run (hourly, daily or weekly)

    • Select the time (in your local time). However, your pipeline will be scheduled in UTC time (unaffected by daylight savings hours)

    • The scheduled pipeline can run at any time in the selected time period. This is to distribute all schedules in Pipelines triggering across the hour.

Remove a schedule

Go to Pipelines > Schedules (at the top right-hand side of the screen) to see all the schedules for a repository.

  • Remove a schedule by using the 'trash' icon at the right of the schedule.

  • Note that schedules created using the API are displayed as a Cron expression (such as 0 10 15 * *).

Branch workflows

You can change what your pipeline does depending on which branch you push to. All you need is some branch-specific configuration in your bitbucket-pipelines.yml file.

See also Configure bitbucket-pipelines.yml.


That example shows two branches based on the master branch:

  • a branch called feature/BB-123-fix-links that is a feature branch

  • a branch called experimental where your team can go crazy innovating and breaking stuff. This branch is not a feature branch.

The same bitbucket-pipelines.yml file lives in the root directory of each branch. On each push to a branch, Pipelines executes the scripts assigned to that branch in the bitbucket-pipelines.yml file:



  • master step definition contains instructions that run on a commit to master

  • feature/* definition contains instructions that run on a commit to any feature branch (that's our BB-123-fix-links branch)

  • default definition contains instructions that run on a commit to any branch that is not master or feature (that's our experimental branch)

Note that the branch pipelines are triggered only if the bitbucket-pipelines.yml file requirements for a branch are met.

If you ever want to push a commit and skip triggering its pipeline, you can add [skip ci] or [ci skip] to the commit message.


Default branches: Contains the pipeline definition for all branches that don't match a pipeline definition in other sections. The default pipeline runs on every push to the repository unless a branch-specific pipeline is defined. You can define a branch pipeline in the branches section.

Note: The default pipeline doesn't run on tags or bookmarks.


tags: Defines all tag-specific build pipelines. The names or expressions in this section are matched against tags and annotated tags in your Git repository.


This tag triggers a pipeline when a tag starting with “release-” is pushed.

pull-request: A special pipeline that only runs on pull requests initiated from within your repo. It merges the destination branch into your working branch before it runs. Pull requests from a forked repository don't trigger the pipeline. If the merge fails, the pipeline stops.

Pull request pipelines run in addition to any branch and default pipelines that are defined, so if the definitions overlap you may get 2 pipelines running at the same time.

If you already have branches in your configuration, and you want them all to only run on pull requests, replace the keyword branches with pull-requests.



custom: Defines pipelines that can only be triggered manually or scheduled from the Bitbucket Cloud interface.


With a configuration like the one above, you should see the following pipelines in the Run pipeline dialog in Bitbucket Cloud:


variables [Custom pipelines only] Contains variables that are supplied when a pipeline is launched. To enable the variables, define them under the custom pipeline that you want to enter when you run the pipeline:


Then, when you run a custom pipeline (Branches ⋯ Run pipeline for a branch > Custom:..) you'll be able to fill them in.

The keyword variables can also be part of the definition of a service.

bookmarks: Defines all bookmark-specific build pipelines. The names or expressions in this section are matched against bookmarks in your Mercurial repository.


Glob patterns

Glob patterns don't allow any expression to start with a star. Every expression that starts with a star needs to be put in quotes.


  • Matches with feature/<any_branch>.

  • The glob pattern doesn't match the slash ( /), so Git branches like feature/<any_branch>/<my_branch> are not matched for feature/*.


  • If you specify the exact name of a branch, a tag, or a bookmark, the pipeline defined for the specific branch overrides any more generic expressions that would match that branch. For example, let's say you specify a pipeline for feature/* and feature/bb-123-fix-links. On a commit to the feature/bb-123-fix-links branch, Pipelines executes the steps defined for feature/bb-123-fix-links and won't execute the steps defined in the feature/*.

' * '

  • Matches all branches, tags, or bookmarks. The star symbol ( * ) must be between single quotes.

  • This glob pattern doesn't match the slash (/ ), so Git branches like feature/bb-123-fix-links are not matched for '*'. If you need the slash to match, use '**' instead of '*'.

' ** '

  • Matches all branches, tags, or bookmarks. For example, it includes branches with the slash ( /) like feature/bb-123-fix-links. The ** expression must be in quotes.

' */feature '

  • This expression requires quotes.

' master ' and duplicate branch names

  • Names in quotes are treated the same way as names without quotes. For example, Pipelines sees master and ' master ' as the same branch names.

  • In the situation described above, Pipelines will match only against one name (master or ' master', never both).

  • Try to avoid duplicating names in your bitbucket-pipelines.yml file.


Last modified on Nov 19, 2020
Cached at 3:35 PM on Jan 21, 2021 |

Additional Help

Ask the Community