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 donot 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.
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
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
In Bitbucket, choose a repo and go to Branches.
Choose the branch you want to run a pipeline for.
Click (...) , and select Run pipeline for a branch.
Choose a pipeline and click Run:
Run a pipeline manually from the Commits view
In Bitbucket, choose a repo and go to Commits.
Go to the Commits' view for a commit.
Select a commit hash.
Select Run pipeline.
Choose a pipeline, then click Run:
Run a pipeline manually from the Pipelines page
In Bitbucket, choose a repo and go to Pipelines.
Click Run pipeline
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.
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
Here's a simple example showing how you would define a custom pipeline in the bitbucket-pipelines.yml file.
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 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.