Atlassian Bamboo

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 운영, GitLab Dedicated

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

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

Bamboo 구성

  1. Bamboo에서 빌드 계획으로 이동하고 작업 > 계획 구성을 선택합니다.
  2. 트리거 탭을 선택합니다.
  3. 트리거 추가를 선택합니다.
  4. GitLab 트리거와 같은 설명을 입력합니다.
  5. 저장소에서 변경 내용이 커밋될 때 빌드를 트리거를 선택합니다.
  6. 하나 이상의 저장소에 대한 확인란을 선택합니다.
  7. 트리거 IP 주소에 GitLab IP 주소를 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거할 수 있도록 허용됩니다.
  8. 트리거를 저장합니다.
  9. 왼쪽 패널에서 빌드 단계를 선택합니다. 여러 빌드 단계가 있는 경우 Git 체크아웃 작업을 포함하는 마지막 단계를 선택합니다.
  10. 기타 탭을 선택합니다.
  11. 패턴 일치 레이블링에서 ${bamboo.repository.revision.number}레이블에 입력합니다.
  12. 저장을 선택합니다.

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

GitLab 구성

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

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="실패"
   if [ "${bamboo_buildFailed}" = "false" ]; then
     cistatus="성공"
   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은 / (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"

문제 해결

Build가 트리거되지 않음

Build가 트리거되지 않으면 Bamboo에서 트리거 IP 주소에 올바른 GitLab IP 주소를 입력했는지 확인하세요. 또한 요청 실패를 위해 연합 웹훅 로그를 확인하세요.

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

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