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. Trigger 추가를 선택합니다.
  4. GitLab 트리거와 같은 설명을 입력합니다.
  5. Changes are committed될 때 리포지터리에서 빌드를 트리거를 선택합니다.
  6. 하나 이상의 리포지터리에 대한 확인란을 선택합니다.
  7. GitLab IP 주소를 Trigger IP 주소에 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거할 수 있도록 허용됩니다.
  8. 트리거를 저장합니다.
  9. 좌측 패널에서 빌드 단계를 선택합니다. 여러 빌드 단계가 있는 경우 Git checkout 작업을 포함하는 마지막 단계를 선택합니다.
  10. Miscellaneous 탭을 선택합니다.
  11. Labels${bamboo.repository.revision.number}를 입력하여 Pattern Match Labeling 아래에 입력합니다.
  12. Save를 선택합니다.

Bamboo는 GitLab에서 트리거를 받을 준비가 되었습니다. 이제 GitLab에서 Bamboo를 통합 설정하세요.

GitLab 구성

  1. 좌측 사이드바에서 검색 또는 이동하여 프로젝트를 찾습니다.
  2. Settings > Integrations을 선택합니다.
  3. Atlassian Bamboo를 선택합니다.
  4. Active 확인란이 선택되어 있는지 확인합니다.
  5. Bamboo 서버의 기본 URL을 입력합니다. 예: https://bamboo.example.com.
  6. 선택 사항. SSL 확인을 비활성화하려면 Enable SSL verification 확인란을 선택 취소합니다.
  7. Bamboo 빌드 계획에서 빌드 키를 입력합니다.
  8. 빌드 계획을 트리거할 수 있는 Bamboo 사용자에 대한 사용자 이름과 암호를 필요에 따라 입력합니다. 인증이 필요하지 않은 경우 이러한 필드를 비워둡니다.
  9. 선택 사항. Test settings을 선택합니다.
  10. Save changes를 선택합니다.

Bamboo 빌드 계획 빌드 키 식별

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

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

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

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

  • 빌드 상태로 커밋 업데이트.
  • 커밋의 target_url로 Bamboo 빌드 계획 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) 또는 : (ssh)
    end=$((${#repo} - $start -4)) # .git을 위해 -4
    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 주소에 올바른 GitLab IP 주소를 입력했는지 확인합니다. 또한, 요청 실패에 대한 통합 웹훅 로그를 확인합니다.

GitLab UI에서 사용 불가능한 고급 Atlassian Bamboo 기능

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