Connect to a Bitbucket Data Center repository

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

Before you begin

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

    Enable the APIs

Connect to a Bitbucket Data Center repository

Console

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

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

    Open the Repositories page

  2. At the top of the page, select the 1st gen tab.

  3. Click Connect Repository.

  4. Select Bitbucket Data Center.

    You will see the Connect Repository panel. Complete the following steps to connect your Bitbucket Data Center repository:

    1. Region: Select the region your connection is in.

    2. Under Select source code management provider, select Bitbucket Data Center.

    3. Host connection: Select the name of your host connection from the drop-down menu.

    4. Click Continue.

    5. Under Select Repository, select the Bitbucket Data Center repositories you want to connect to Cloud Build.

    6. Once you have selected your Bitbucket Data Center account and repositories, read the consent disclaimer and select the checkbox next to it to indicate that you accept the presented terms.

    7. Click Connect to connect your repositories.

  5. Click Done. Optionally, click Create a trigger to create a trigger.

API

To connect your Bitbucket Data Center repository to Cloud Build using the API, complete the following steps:

  1. Create a JSON file with the following contents:

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

    Where:

    • PROJECT_NUMBER is the project number of your Cloud project.
    • REGION is the region associated with your Bitbucket Data Center configuration.
    • BITBUCKET_DATA_CENTER_CONFIG_NAME is the name of your Bitbucket Data Center configuration.
    • PROJECT_KEY is the key of your Bitbucket Data Center 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 is similar to https://${HOST_URI}/projects/~${USER_NAME}/repos/${REPO_SLUG}.
    • REPO_SLUG is the slug of your Bitbucket Data Center repository.
  2. Run the following curl command in your terminal from the same directory as the JSON file:

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/REGION/bitbucketServerConfigs/BITBUCKET_DATA_CENTER_CONFIG_NAME/connectedRepositories:batchCreate -d @requests.json

Where:

  • PROJECT_NUMBER is your Google Cloud project number.
  • PROJECT_ID is your Google Cloud project ID.
  • REGION is the region associated with your Bitbucket Data Center configuration.
  • BITBUCKET_DATA_CENTER_CONFIG_NAME is the name of your Bitbucket Data Center configuration. If successful, the response body contains a newly created instance of Operation.
  1. Run 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/REGION/operations/OPERATION_ID
    

    Where:

    • PROJECT_NUMBER is your Google Cloud project number.
    • PROJECT_ID is your Google Cloud ID.
    • REGION is the region associated with your Bitbucket Data Center configuration.
    • OPERATION_ID is the ID of your Bitbucket Data Center configuration creation operation. You can find the Operation ID in the name field of your response. The format of the name field in your response looks like the following: projects/project-id/locations/region/operations/operation-id.

    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 Data Center 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.

When a repository is connected, Cloud Build configures a webhook on the repository in your Bitbucket Data Center instance. The repository then sends webhooks to invoke the corresponding Bitbucket Data Center 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:

gcloud alpha builds enterprise-config bitbucketserver describe CONFIG_NAME  --region=REGION

Where:

  • CONFIG_NAME is the name of the Bitbucket Data Center config
  • REGION is the region of the Bitbucket Data Center host connection

What's next