Atlassian Bamboo
GitLab 프로젝트에 변경 내용을 푸시할 때 Atlassian Bamboo에서 자동으로 빌드를 트리거할 수 있습니다.
Bamboo는 웹훅과 커밋 데이터를 수신할 때 전통적인 빌드 시스템과 같은 기능을 제공하지 않습니다. GitLab에서 통합을 설정하기 전에 Bamboo 빌드 계획을 구성해야 합니다.
Bamboo 구성
- Bamboo에서 빌드 계획으로 이동하고 작업 > 계획 구성을 선택합니다.
- 트리거 탭을 선택합니다.
- 트리거 추가를 선택합니다.
-
GitLab trigger
와 같은 설명을 입력합니다. - 저장소가 변경이 커밋될 때 빌드를 트리거를 선택합니다.
- 하나 이상의 저장소에 대한 확인란을 선택합니다.
- 트리거 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 사용자의 사용자 이름과 암호를 입력합니다. 인증이 필요하지 않은 경우 이러한 필드를 비워 둡니다.
- 선택 사항. 설정 테스트를 선택합니다.
- 변경 사항 저장을 선택합니다.
Atlassian Bamboo 빌드 계획 빌드 키 식별
빌드 키는 일반적으로 프로젝트 키와 계획 키로 구성된 고유 식별자입니다.
빌드 키는 짧고, 모두 대문자이며 대시(-
)로 구분된다는 특징이 있습니다. 예: PROJ-PLAN
.
빌드 키는 Bamboo에서 계획을 보는 경우 브라우저 URL에 포함됩니다. 예: https://bamboo.example.com/browse/PROJ-PLAN
.
GitLab에서 Bamboo 빌드 상태 업데이트
커밋 상태 API와 Bamboo 빌드 변수를 사용하는 스크립트를 사용하여 다음을 수행할 수 있습니다.
- 빌드 상태로 커밋 업데이트
- 커밋의
target_url
로 Bamboo 빌드 계획 URL 추가
예:
- GitLab에서
:api
권한을 가진 액세스 토큰을 생성합니다. - 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="실패" 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"
문제 해결
빌드가 트리거되지 않는 경우
빌드가 트리거되지 않으면 Bamboo에서 트리거 IP 주소에 올바른 GitLab IP 주소를 입력했는지 확인합니다. 또한, 요청 실패에 대한 통합 웹훅 로그를 확인합니다.
GitLab UI에서 사용할 수 없는 고급 Atlassian Bamboo 기능
고급 Atlassian Bamboo 기능은 GitLab과 호환되지 않습니다. 이러한 기능에는 GitLab UI에서 빌드 로그를 확인하는 기능 등이 포함됩니다.