Atlassian Bamboo integration

You can automatically trigger builds in Atlassian Bamboo when you push changes to your project in GitLab.

Bamboo doesn’t provide the same features as a traditional build system when accepting webhooks and commit data. You must configure a Bamboo build plan before you configure the integration in GitLab.

Configure Bamboo

  1. In Bamboo, go to a build plan and choose Actions > Configure plan.
  2. Select the Triggers tab.
  3. Select Add trigger.
  4. Enter a description like GitLab trigger.
  5. Select Repository triggers the build when changes are committed.
  6. Select the checkbox for one or more repositories.
  7. Enter the GitLab IP address in Trigger IP addresses. These IP addresses are allowed to trigger Bamboo builds.
  8. Save the trigger.
  9. In the left pane, select a build stage. If you have multiple build stages, select the last stage that contains the Git checkout task.
  10. Select the Miscellaneous tab.
  11. Under Pattern Match Labeling enter ${bamboo.repository.revision.number} in Labels.
  12. Select Save.

Bamboo is ready to accept triggers from GitLab. Next, set up the Bamboo integration in GitLab.

Configure GitLab

  1. On the top bar, select Menu > Projects and find your project.
  2. On the left sidebar, select Settings > Integrations.
  3. Select Atlassian Bamboo.
  4. Ensure the Active checkbox is selected.
  5. Enter the base URL of your Bamboo server. For example, https://bamboo.example.com.
  6. Optional. Clear the Enable SSL verification checkbox to disable SSL verification.
  7. Enter the build key from your Bamboo build plan.
  8. If necessary, enter a username and password for a Bamboo user that has access to trigger the build plan. Leave these fields blank if you do not require authentication.
  9. Optional. To test the configuration and trigger a build in Bamboo, select Test Settings.
  10. Select Save changes.

Identify the Bamboo build plan build key

A build key is a unique identifier typically made up from the project key and plan key. Build keys are short, all uppercase, and separated with a dash (-), for example PROJ-PLAN.

The build key is included in the browser URL when you view a plan in Bamboo. For example, https://bamboo.example.com/browse/PROJ-PLAN.

Update Bamboo build status in GitLab

You can use a script that uses the commit status API and Bamboo build variables to:

  • Update the commit with the build status.
  • Add the Bamboo build plan URL as the commit’s target_url.

For example:

  1. Create an access token in GitLab with :api permissions.
  2. Save the token as a $GITLAB_TOKEN variable in Bamboo.
  3. Add the following script as a final task to the Bamboo plan’s jobs:

    #!/bin/bash
    
    # Script to update CI status on GitLab.
    # Add this script as final inline script task in a Bamboo job.
    #
    # General documentation: https://docs.gitlab.com/ee/user/project/integrations/bamboo.html
    # Fix inspired from https://gitlab.com/gitlab-org/gitlab/-/issues/34744
    
    # Stop at first error
    set -e
    
    # Access token. Set this as a CI variable in Bamboo.
    #GITLAB_TOKEN=
    
    # Status
    cistatus="failed"
    if [ "${bamboo_buildFailed}" = "false" ]; then
      cistatus="success"
    fi
    
    repo_url="${bamboo_planRepository_repositoryUrl}"
    
    # Check if we use SSH or HTTPS
    protocol=${repo_url::4}
    if [ "$protocol" == "git@" ]; then
      repo=${repo_url:${#protocol}};
      gitlab_url=${repo%%:*};
    else
      protocol="https://"
      repo=${repo_url:${#protocol}};
      gitlab_url=${repo%%/*};
    fi
    
    start=$((${#gitlab_url} + 1)) # +1 for the / (https) or : (ssh)
    end=$((${#repo} - $start -4)) # -4 for the .git
    repo=${repo:$start:$end}
    repo=$(echo "$repo" | sed "s/\//%2F/g")
    
    # Send request
    url="https://${gitlab_url}/api/v4/projects/${repo}/statuses/${bamboo_planRepository_revision}?state=${cistatus}&target_url=${bamboo_buildResultsUrl}"
    echo "Sending request to $url"
    curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$url"
    

Troubleshooting

Builds not triggered

If builds are not triggered, ensure you entered the right GitLab IP address in Bamboo under Trigger IP addresses. Also check service hook logs for request failures.

Advanced Atlassian Bamboo features not available in GitLab UI

Advanced Atlassian Bamboo features are not compatible with GitLab. These features include, but are not limited to, the ability to watch the build logs from the GitLab UI.