Atlassian Bamboo

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

당신이 GitLab 프로젝트에 변경 사항을 푸시할 때 Atlassian Bamboo에서 빌드를 자동으로 트리거할 수 있습니다.

Bamboo는 웹훅 및 커밋 데이터를 수락할 때 기존 빌드 시스템과 같은 기능을 제공하지 않습니다. GitLab의 통합을 구성하기 전에 Bamboo 빌드 계획을 구성해야 합니다.

Bamboo 구성

  1. Bamboo에서 빌드 계획으로 이동하고 Actions > Configure plan을 선택하세요.
  2. Triggers 탭을 선택하세요.
  3. 트리거 추가를 선택하세요.
  4. GitLab 트리거와 같은 설명을 입력하세요.
  5. 리포지터리가 변경되면 빌드를 트리거함을 선택하세요.
  6. 하나 이상의 리포지터리에 대한 확인란을 선택하세요.
  7. 트리거 IP 주소에 GitLab IP 주소를 입력하세요. 이 IP 주소들은 Bamboo 빌드를 트리거할 수 있습니다.
  8. 트리거를 저장하세요.
  9. 좌측 창에서 빌드 단계를 선택하세요. 여러 개의 빌드 단계가 있는 경우 Git 체크아웃 작업을 포함한 마지막 단계를 선택하세요.
  10. Miscellaneous 탭을 선택하세요.
  11. 패턴 일치 라벨링 아래 Labels${bamboo.repository.revision.number}를 입력하세요.
  12. 저장을 선택하세요.

Bamboo는 GitLab로부터의 트리거를 수용할 준비가 되었습니다. 이제 GitLab에서 Bamboo 통합을 설정하세요.

GitLab 구성

  1. 왼쪽 사이드바에서 검색 또는 이동하여를 선택하여 프로젝트를 찾으세요.
  2. Settings > Integrations을 선택하세요.
  3. Atlassian Bamboo을 선택하세요.
  4. Active 확인란이 선택되었는지 확인하세요.
  5. Bamboo 서버의 기본 URL을 입력하세요. 예: https://bamboo.example.com.
  6. 선택 사항. SSL verification을 비활성화하려면 Enable SSL verification 확인란을 선택 취소하세요.
  7. Bamboo 빌드 계획에서 빌드 키를 입력하세요.
  8. 인증이 필요한 경우 Bamboo 빌드 계획을 트리거할 수 있는 Bamboo 사용자의 사용자 이름과 암호를 입력하세요. 인증이 필요하지 않은 경우 이 필드를 비워두세요.
  9. 선택 사항. 테스트 설정을 선택하세요.
  10. 변경 사항 저장을 선택하세요.

Bamboo 빌드 계획 빌드 키 식별

빌드 키는 일반적으로 프로젝트 키와 계획 키로 구성된 고유 식별자입니다. 빌드 키는 짧고 대문자로 이루어지며 대시로 구분되어 있습니다 (예: PROJ-PLAN).

빌드 키는 Bamboo에서 계획을 보는 경우 브라우저 URL에 포함됩니다. 예: https://bamboo.example.com/browse/PROJ-PLAN.

GitLab에서 Bamboo 빌드 상태 업데이트

커밋 상태 API와 Bamboo 빌드 변수를 사용하는 스크립트를 사용하여 다음 작업을 수행할 수 있습니다:

  • 빌드 상태로 커밋 업데이트
  • Bamboo 빌드 계획 URL을 커밋의 target_url로 추가

예:

  1. GitLab에서 :api 권한으로 액세스 토큰을 생성하세요.
  2. Bamboo에서 $GITLAB_TOKEN 변수로 토큰을 저장하세요.
  3. 다음 스크립트를 Bamboo 계획의 작업에 최종 작업으로 추가하세요.

    #!/bin/bash
       
    # GitLab에서 CI 상태 업데이트하는 스크립트.
    # 이 스크립트를 Bamboo 작업의 최종 인라인 스크립트로 추가하세요.
    #
    # 일반 문서: https://docs.gitlab.com/ee/user/project/integrations/bamboo.html
    # https://gitlab.com/gitlab-org/gitlab/-/issues/34744에서 영감을 받은 수정
       
    # 처음 오류에서 중지
    set -e
       
    # 액세스 토큰. Bamboo의 CI 변수로 설정하세요.
    #GITLAB_TOKEN=
       
    # 상태
    cistatus="failed"
    if [ "${bamboo_buildFailed}" = "false" ]; then
      cistatus="success"
    fi
       
    repo_url="${bamboo_planRepository_repositoryUrl}"
       
    # SSH 또는 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)) # .git 제외
    repo=${repo:$start:$end}
    repo=$(echo "$repo" | sed "s/\//%2F/g")
       
    # 요청 전송
    url="https://${gitlab_url}/api/v4/projects/${repo}/statuses/${bamboo_planRepository_revision}?state=${cistatus}&target_url=${bamboo_buildResultsUrl}"
    echo "$url로 요청 전송"
    curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$url"
    

문제 해결

빌드가 트리거되지 않는 경우

빌드가 트리거되지 않는 경우, Bamboo의 Trigger IP addresses에 올바른 GitLab IP 주소를 입력했는지 확인하세요. 또한, 요청 실패에 대한 통합 웹훅 로그를 확인하세요.

GitLab UI에서 사용할 수 없는 고급 Atlassian Bamboo 기능

고급 Atlassian Bamboo 기능은 GitLab과 호환되지 않습니다. 이러한 기능에는 GitLab UI에서 빌드 로그를 볼 수 있는 능력 등이 포함됩니다.