Skip to main content
If you have code in a Bitbucket repository, you might want to connect it to an Upsun project. This means you can keep your Bitbucket workflows and treat the Bitbucket repository as the source of truth for your code. Your Upsun project becomes a mirror of your Bitbucket repository. This means you shouldn’t push code directly to Upsun. Any changes you push directly get overwritten by the integration when changes happen in the Bitbucket repository. When you set up an integration with Bitbucket, it automates the following processes for you:
  • Creating a new environment when a branch is created or a pull request is opened.
  • Rebuilding the environment when new code is pushed to Bitbucket.
  • Deleting the environment when a pull request is merged.
You can set up an integration with either Bitbucket Cloud or a self-hosted Bitbucket Server.

Before you begin

To manage source integrations, you need to be a project admin. You also need a Bitbucket Cloud or Bitbucket Server repository with working code.

Bitbucket Cloud

1. Create an OAuth consumer

To integrate your Upsun project with an existing Bitbucket Cloud repository, create an OAuth consumer: A screenshot of how to setup the Bitbucket OAuth consumer
Be sure to define the above as a private consumer by checking the This is a private consumer box.
The Callback URL isn’t important in this case. You can set it to http://localhost. Copy the Key and Secret for your consumer.

2. Enable the Cloud integration

To enable the integration, use either the CLI or the Console.
Run the following command:
For example, if your repository is located at https://bitbucket.org/platformsh/platformsh-docs, the command is similar to the following:
In both the CLI and Console, you can choose from the following options:
To keep your repository clean and avoid performance issues, make sure you enable both the fetch-branches and prune-branches options.

3. Validate the integration

Verify that your integration is functioning properly using the CLI:
Add the webhook manually
If the integration was added with the correct permissions, the necessary webhook is added automatically. If you see a message that the webhook wasn’t added, add one manually. To configure a webhook on a Bitbucket repository, you need to have Admin user permissions.
  1. Get the webhook URL by running this command: upsun integration:get --property hook_url.
  2. Copy the returned URL.
  3. Follow the Bitbucket instructions to create a webhook using the URL you copied. Make sure to update the triggers to include all pull request events except comments and approval.
You can now start pushing code, creating new branches, and opening pull requests directly in your Bitbucket repository. Your Upsun environments are automatically created and updated.

Bitbucket Server

1. Generate a token

To integrate your Upsun project with a repository on a Bitbucket Server instance, you first need to create an access token associated with your account. Generate a token. and give it at least read access to projects and admin access to repositories. Copy the token.

2. Enable the Server integration

To enable the integration, use either the CLI or the Console.
Run the following command:
  • PROJECT_ID is the ID of your Upsun project.
  • OWNER/REPOSITORY is the name of the repository in Bitbucket server.
  • BITBUCKET_SERVER_ACCESS_TOKEN is the token you generated.
  • BITBUCKET_SERVER_URL is the URL for your Bitbucket server.
For example, if your repository is located at https://example.com/platformsh/platformsh-docs, the command is similar to the following:
In both the CLI and Console, you can choose from the following options: To keep your repository clean and avoid performance issues, make sure you enable both the fetch-branches and prune-branches options.

3. Validate the integration

Verify that your integration is functioning properly using the CLI:
Add the webhook manually
If the integration was added with the correct permissions, the necessary webhook is added automatically. If you see a message that the webhook wasn’t added, add one manually. To configure a webhook on a Bitbucket repository, you need to have Admin user permissions.
  1. Get the webhook URL by running this command: upsun integration:get --property hook_url.
  2. Copy the returned URL.
  3. Follow the Bitbucket instructions to create a webhook using the URL you copied. Send all events except comments and approval.
You can now start pushing code, creating new branches, and opening pull requests directly in your Bitbucket repository. Your Upsun environments are automatically created and updated.

Environment parent and status

When a branch is created in Bitbucket, an environment is created in Upsun with the default branch as its parent. It starts as an inactive environment with no data or services. When a pull request is opened in Bitbucket, an environment is created in Upsun with the pull request’s target branch as its parent. It starts as an active environment with a copy of its parent’s data.

Source of truth

When you add an integration, your Bitbucket repository is considered to be the source of truth for the project. Your Upsun project is only a mirror of that repository and you can only push commits to Bitbucket. To clone your code, follow these steps:
Run the following command:
When you do this, you’re cloning from your integrated Bitbucket repository, if you have the appropriate access to do so.

Sync, fetch, and prune

An integration from your source repository to Upsun establishes that:
  • your source repository is the source of truth, where Git operations occur
  • Upsun is a mirror of that repository, provisioning infrastructure according to configuration, and orchestrating environments according to the branch structure of the your source repository repository
Actions that take place on Upsun don’t affect commits on your source repository. Because of this, the your source repository integration enables both fetch-branches (track branches on your source repository) and prune-branches (delete branches that don’t exist on your source repository) by default. You can change these settings but it is recommended to keep them. When enabled by default, you are limited by design as to what actions can be performed within the context of an Upsun project with a your source repository integration:

Pull request URLs

When a pull request is deployed, the integration reports the primary URL for the deployed environment. So you get a link to the deployed environment right in the pull request. If you have multiple routes, ensure the correct one is reported by specifying the primary route.
Last modified on June 25, 2026