Connect to a Bitbucket Server repository

This page explains how to connect to a Bitbucket Server repository to Cloud Build.

Before you begin

  • Enable the Cloud Build, Secret Manager, and Compute Engine APIs.

    Enable the APIs

Connecting to a Bitbucket Server repository

Console

To connect a Bitbucket Server repository to Cloud Build using the Google Cloud console:

  1. Open the Triggers page in the Google Cloud console.

    Open the Triggers page

  2. Click Connect Repository.

    You will see the Connect repository panel.

  3. Under Select source, select Bitbucket Server.

  4. Under Select Repository, select the Bitbucket Server repositories you wish to connect to Cloud Build.

  5. Click Connect to connect your repositories.

    When a repository is connected, Cloud Build configures a webhook on the repository in your Bitbucket Server instance. The repository then sends webhooks to invoke the corresponding Bitbucket Server triggers when you make changes to your repository. A repository can also be connected multiple times with multiple host connections. To learn how to manage webhooks, see Manage webhooks.

    To locate the webhook, you need the webhook ID. The webhook ID for each connected repository can be found in the BitbucketServerConfig. Enter the following command to retrieve the webhook ID, where CONFIG_NAME is the name of the Bitbucket Server config:

    gcloud alpha builds enterprise-config bitbucketserver describe --config=CONFIG_NAME
    
  6. Click Done. Optionally, click Create a trigger to create a trigger.

API

To connect your Bitbucket Server repository to Cloud Build using the API, use the following JSON template:

  {
    "parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
    "requests": {
      "parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
      "bitbucketServerConnectedRepository": {
        "parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
        "repo": {
           "projectKey": "PROJECT_KEY",
           "repoSlug": "REPO_SLUG"
         }
       }
    }
  }

Where:

  • PROJECT_NUMBER is the project number of your Cloud project.
  • BITBUCKET_SERVER_CONFIG_NAME is the name of your Bitbucket Server configuration.
  • PROJECT_KEY is the key of your Bitbucket Server project. If you want to connect a personal repository, your project key should contain the tilde (~) symbol before your username. For example, ~${USERNAME}. The complete URL for a host repository may look like https://${HOST_URI}/projects/~${USER_NAME}/repos/${REPO_SLUG}.
  • REPO_SLUG is the slug of your Bitbucket Server repository.

Enter the following curl command in your terminal:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/global/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME/connectedRepositories:batchCreate -d @requests.json

Where:

  • PROJECT_NUMBER is your Cloud project number.
  • PROJECT_ID is your Cloud project ID.
  • BITBUCKET_SERVER_CONFIG_NAME is the name of your Bitbucket Server configuration.

If successful, the response body contains a newly created instance of Operation.

Enter the following curl command in your terminal:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8"  -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/global/operations/OPERATION_ID

Where:

  • PROJECT_NUMBER is your Cloud project number.
  • PROJECT_ID is your Cloud project ID.
  • OPERATION_ID is the ID of your Bitbucket Server configuration creation operation.

You may need to keep running the GetOperation API command until the response contains done: true, which indicates the operation is completed. If the Bitbucket Server repository is connected successfully, you can see the connected repository in the response.bitbucketServerConnectedRepositories field. Otherwise, see the error field for a detailed error report.

What's next