Skip to main content
Version: v0.16

BitBucket Cloud

Visit config-ui: http://localhost:4000 and go to Connections page.

Step 1 - Add Data Connections

image

Connection Name

Give your connection a unique name to help you identify it in the future.

Endpoint URL

For BitBucket Cloud, you do not need to enter the REST API endpoint URL, which is always https://api.bitbucket.org/2.0/.

DevLake will support BitBucket Server in the future.

Username and App Password

Learn about how to create a BitBucket app password.

The following permissions are required to collect data from BitBucket repositories:

  • Account:Read
  • Workspace membership:Read
  • Projects:Read
  • Repositories:Read
  • Pull requests:Read
  • Issues:Read
  • Pipelines:Read
  • Runners:Read

bitbucket-app-password-permissions

Proxy URL (Optional)

If you are behind a corporate firewall or VPN you may need to utilize a proxy server. Enter a valid proxy server address on your network, e.g. http://your-proxy-server.com:1080

Fixed Rate Limit (Optional)

DevLake uses a dynamic rate limit to collect BitBucket data. You can adjust the rate limit if you want to increase or lower the speed.

The maximum rate limit for different entities in BitBucket(Cloud) varies from 1,000 - 60,000 requests/hour. The rate limit to access repository data is 1,000 requests/hour, but we find it can still run when we input a value that exceeds 1,000. You can try using a larger rate limit if you have large repositories.

Test and Save Connection

Click Test Connection, if the connection is successful, click Save Connection to add the connection.

Step 2 - Configure Blueprint

image

Repositories

Select the BitBucket repositories to collect.

Data Entities

Usually, you don't have to modify this part. However, if you don't want to collect certain BitBucket entities, you can unselect some entities to accelerate the collection speed.

  • Issue Tracking: BitBucket issues, issue comments, etc.
  • Source Code Management: BitBucket repos, refs, commits, etc.
  • Code Review: BitBucket PRs, PR comments, etc.
  • CI/CD: BitBucket Pipelines, BitBucket Deployments, etc.
  • Cross Domain: BitBucket accounts, etc.

Step 3 - Add Transformation (Optional)

You can add a transformation to standardize the data. A transformation acts on the BitBucket data in the tool layer, transforming it to the domain layer.

Issue Tracking

Issue Status Mapping
image

The given settings transformed the BitBucket issue statuses to the issue statuses used by DevLake, enabling you to measure metrics like the Issue Delivery Rate on the pre-built dashboards, as DevLake understands your definition of when an issue is considered as completed (status = 'DONE').

  • TODO: The issues that are planned but have not been worked on yet
  • IN-PROGRESS: The issues that are work-in-progress
  • DONE: The issues that are completed
  • OTHER: Other issues statuses that do not belong to the three statuses above

The original status will be saved in the column original_status of the table 'issues', and the new status will be saved in the column status of the same table.

Issue Type Mapping
DevLake will convert the issue types of 'enhancement', 'proposal', and 'task' from BitBucket into the new issue type 'REQUIREMENT' for DevLake. In contrast, any issues classified as 'bug' in BitBucket will be converted into the new issue type 'BUG' for DevLake. The original type will be saved in the column original_type of the table 'issues', and the new type will be saved in the column type of the same table.

CI/CD

The CI/CD configuration for BitBucket is used for calculating DORA metrics.

By default, DevLake will identify the deployment and environment settings that are defined in the BitBucket CI .yml file.

image

However, to ensure this works properly, you must specify the deployment settings in the .yml file. img_v2_89602d14-a733-4679-9d4b-d9635c03bc5g

The pipeline steps with the deployment key will be recognized as DevLake deployments. The value of the deployment key will be recognized as the environment of DevLake deployments.

All BitBucket pipeline steps will be saved in table 'cicd_tasks', but DevLake deployments will be set as type = 'deployment' and environment = '{BitBucket-pipeline-step.deployment.value}'.

If you have not defined these settings in the .yml file, please select 'Detect Deployments from Pipeline steps in BitBucket', and input the RegEx in the following fields:

image

  • Deployment: A pipeline step with a name that matches the given RegEx will be recognized as a DevLake deployment.
  • Production: A pipeline step with a name that matches the given RegEx will be recognized as a DevLake cicd_task in the production environment.

Introduction to BitBucket CI entities
BitBucket has several key CI entities: pipelines, pipeline steps, and deployments. A Bitbucket pipeline contains several pipeline steps. Each pipeline step defined with a deployment key can be mapped to a BitBucket deployment.

Each Bitbucket pipeline is converted to a cicd_pipeline in DevLake's domain layer schema and each Bitbucket pipeline step is converted to a cicd_task in DevLake's domain layer. image

If a pipeline step defines deployment with a value (usually indicating the environment), this pipeline step is also a BitBucket deployment.

image

Additional Settings (Optional)

  • Tags Limit: DevLake compares the last N pairs of tags to get the "commit diff', "issue diff" between tags. N defaults to 10.

    • commit diff: new commits for a tag relative to the previous one
    • issue diff: issues solved by the new commits for a tag relative to the previous one
  • Tags Pattern: Only tags that meet the given Regular Expression will be counted.

  • Tags Order: Only "reverse semver" order is supported for now.

Please click Save to save the transformation rules for the repo. In the data scope list, click Next Step to continue configuring.

Step 4 - Setting Sync Frequency

You can choose how often you would like to sync your data in this step by selecting a sync frequency option or entering a cron code to specify your prefered schedule.

Troubleshooting

If you run into any problems, please check the Troubleshooting or create an issue.