Atlassian Bamboo
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab에서 프로젝트에 변경 사항을 푸시할 때 Atlassian Bamboo에서 빌드를 자동으로 트리거할 수 있습니다. Bamboo는 웹훅 및 커밋 데이터를 수락할 때 기존 빌드 시스템과 동일한 기능을 제공하지 않습니다.
GitLab에서 프로젝트에 변경 사항을 푸시할 때 Atlassian Bamboo에서 빌드를 자동으로 트리거할 수 있습니다.
Bamboo는 웹훅 및 커밋 데이터를 수락할 때 기존 빌드 시스템과 동일한 기능을 제공하지 않습니다. GitLab에서 통합을 구성하기 전에 Bamboo 빌드 계획을 구성해야 합니다.
Bamboo 구성#
- Bamboo에서 빌드 계획으로 이동하여 Actions > Configure plan을 선택합니다.
- Triggers 탭을 선택합니다.
- Add trigger를 선택합니다.
GitLab trigger와 같은 설명을 입력합니다.- Repository triggers the build when changes are committed를 선택합니다.
- 하나 이상의 리포지터리에 대한 확인란을 선택합니다.
- Trigger IP addresses에 GitLab IP 주소를 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거하도록 허용됩니다.
- 트리거를 저장합니다.
- 왼쪽 창에서 빌드 단계를 선택합니다. 빌드 단계가 여러 개인 경우 Git 체크아웃 태스크가 포함된 마지막 단계를 선택합니다.
- Miscellaneous 탭을 선택합니다.
- Pattern Match Labeling 아래에서 Labels에
${bamboo.repository.revision.number}를 입력합니다. - Save를 선택합니다.
Bamboo가 GitLab의 트리거를 받을 준비가 되었습니다. 다음으로 GitLab에서 Bamboo 통합을 설정합니다.
GitLab 구성#
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
- Atlassian Bamboo를 선택합니다.
- Active 확인란이 선택되어 있는지 확인합니다.
- Bamboo 서버의 기본 URL을 입력합니다. 예를 들어,
https://bamboo.example.com. - 선택 사항. Enable SSL verification 확인란을 지워 SSL 검증을 비활성화합니다.
- Bamboo 빌드 계획의 빌드 키를 입력합니다.
- 필요한 경우 빌드 계획 트리거에 접근 권한이 있는 Bamboo 사용자의 사용자 이름과 비밀번호를 입력합니다. 인증이 필요하지 않은 경우 이 필드를 비워 둡니다.
- 선택 사항. Test settings를 선택합니다.
- Save changes를 선택합니다.
Bamboo 빌드 계획 빌드 키 식별#
빌드 키는 일반적으로 프로젝트 키와 계획 키로 구성된 고유 식별자입니다.
빌드 키는 짧고, 모두 대문자이며, 대시(-)로 구분됩니다. 예를 들어 PROJ-PLAN.
빌드 키는 Bamboo에서 계획을 볼 때 브라우저 URL에 포함됩니다. 예를 들어, https://bamboo.example.com/browse/PROJ-PLAN.
GitLab에서 Bamboo 빌드 상태 업데이트#
커밋 상태 API와 Bamboo 빌드 변수를 사용하는 스크립트를 사용하여 다음을 수행할 수 있습니다:
- 빌드 상태로 커밋을 업데이트합니다.
- Bamboo 빌드 계획 URL을 커밋의
target_url로 추가합니다.
예를 들어:
-
api범위가 설정된 개인 접근 토큰을 생성합니다. -
토큰을 Bamboo의
$GITLAB_TOKEN변수로 저장합니다. -
다음 스크립트를 Bamboo 계획 잡의 최종 태스크로 추가합니다:
#!/bin/bash # Script to update CI status on GitLab. # Add this script as final inline script task in a Bamboo job. # # General documentation: https://docs.gitlab.com/user/project/integrations/bamboo/ # Fix inspired from https://gitlab.com/gitlab-org/gitlab/-/issues/34744 # Stop at first error set -e # Access token. Set this as a CI variable in Bamboo. #GITLAB_TOKEN= # Status cistatus="failed" if [ "${bamboo_buildFailed}" = "false" ]; then cistatus="success" fi repo_url="${bamboo_planRepository_repositoryUrl}" # Check if SSH or HTTPS is in use 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") # Send request url="https://${gitlab_url}/api/v4/projects/${repo}/statuses/${bamboo_planRepository_revision}?state=${cistatus}&target_url=${bamboo_buildResultsUrl}" echo "Sending request to $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에서 빌드 로그를 볼 수 있는 기능이 포함되지만 이에 국한되지 않습니다.
