아틀라시안 Bamboo
GitLab에 프로젝트에 변경 사항을 푸시할 때 아틀라시안 Bamboo에서 빌드를 자동으로 트리거할 수 있습니다.
Bamboo는 웹후크 및 커밋 데이터를 수용할 때 전통적인 빌드 시스템과 동일한 기능을 제공하지 않습니다.
GitLab에서 통합을 구성하기 전에 Bamboo 빌드 계획을 구성해야 합니다.
Bamboo 구성하기
- Bamboo에서 빌드 계획으로 이동하여 작업 > 계획 구성을 선택합니다.
- 트리거 탭을 선택합니다.
- 트리거 추가를 선택합니다.
-
GitLab 트리거
와 같은 설명을 입력합니다. - 커밋될 때 리포지토리가 빌드를 트리거합니다를 선택합니다.
- 하나 이상의 리포지토리에 대한 체크박스를 선택합니다.
- 트리거 IP 주소에 GitLab IP 주소를 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거할 수 있습니다.
- 트리거를 저장합니다.
- 왼쪽 창에서 빌드 단계를 선택합니다. 여러 빌드 단계가 있는 경우 Git 체크 아웃 작업이 포함된 마지막 단계를 선택합니다.
- 기타 탭을 선택합니다.
-
패턴 일치 라벨링에서 라벨에
${bamboo.repository.revision.number}
를 입력합니다. - 저장을 선택합니다.
Bamboo가 GitLab에서 트리거를 수신하도록 준비되었습니다. 다음으로 GitLab에서 Bamboo 통합을 설정합니다.
GitLab 구성하기
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 통합을 선택합니다.
- Atlassian Bamboo를 선택합니다.
- 활성 체크박스가 선택되어 있는지 확인합니다.
- Bamboo 서버의 기본 URL을 입력합니다. 예를 들어,
https://bamboo.example.com
. - 선택 사항. SSL 검증 활성화 체크박스를 지워 SSL 검증을 비활성화합니다.
- Bamboo 빌드 계획의 빌드 키를 입력합니다.
- 필요한 경우 빌드 계획을 트리거할 수 있는 Bamboo 사용자에 대한 사용자 이름과 암호를 입력합니다. 인증이 필요하지 않은 경우 이 필드는 비워두세요.
- 선택 사항. 설정 테스트를 선택합니다.
- 변경 사항 저장을 선택합니다.
Bamboo 빌드 계획 빌드 키 확인
빌드 키는 프로젝트 키와 계획 키로 구성된 고유 식별자입니다.
빌드 키는 짧고, 모두 대문자이며, 하이픈(-
)으로 구분됩니다.
예시: PROJ-PLAN
.
빌드 키는 Bamboo에서 계획을 볼 때 브라우저 URL에 포함됩니다. 예시: https://bamboo.example.com/browse/PROJ-PLAN
.
GitLab에서 Bamboo 빌드 상태 업데이트
커밋 상태 API 및 Bamboo 빌드 변수를 사용하는 스크립트를 사용하여:
- 빌드 상태로 커밋을 업데이트합니다.
- Bamboo 빌드 계획 URL을 커밋의
target_url
로 추가합니다.
예시:
-
:api
권한으로 GitLab에서 액세스 토큰을 생성합니다. - Bamboo에
$GITLAB_TOKEN
변수로 토큰을 저장합니다. -
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)) # -4 for the .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로 요청 전송: $url" curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$url"
문제 해결
빌드가 트리거되지 않음
빌드가 트리거되지 않으면 Bamboo의 트리거 IP 주소에 올바른 GitLab IP 주소를 입력했는지 확인하세요. 또한, 요청 실패에 대한 통합 웹훅 로그를 확인하세요.
GitLab UI에서 사용할 수 없는 고급 Atlassian Bamboo 기능
고급 Atlassian Bamboo 기능은 GitLab과 호환되지 않습니다. 이러한 기능에는 GitLab UI에서 빌드 로그를 볼 수 있는 기능 등이 포함되지만 이에 한정되지 않습니다.