InfoGrab Docs

Atlassian Bamboo

요약

GitLab에서 프로젝트에 변경 사항을 푸시할 때 Atlassian Bamboo에서 빌드를 자동으로 트리거할 수 있습니다. Bamboo는 웹훅 및 커밋 데이터를 수락할 때 기존 빌드 시스템과 동일한 기능을 제공하지 않습니다.

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

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

Bamboo 구성#

  1. Bamboo에서 빌드 계획으로 이동하여 Actions > Configure plan을 선택합니다.
  2. Triggers 탭을 선택합니다.
  3. Add trigger를 선택합니다.
  4. GitLab trigger와 같은 설명을 입력합니다.
  5. Repository triggers the build when changes are committed를 선택합니다.
  6. 하나 이상의 리포지터리에 대한 확인란을 선택합니다.
  7. Trigger IP addresses에 GitLab IP 주소를 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거하도록 허용됩니다.
  8. 트리거를 저장합니다.
  9. 왼쪽 창에서 빌드 단계를 선택합니다. 빌드 단계가 여러 개인 경우 Git 체크아웃 태스크가 포함된 마지막 단계를 선택합니다.
  10. Miscellaneous 탭을 선택합니다.
  11. Pattern Match Labeling 아래에서 Labels${bamboo.repository.revision.number}를 입력합니다.
  12. Save를 선택합니다.

Bamboo가 GitLab의 트리거를 받을 준비가 되었습니다. 다음으로 GitLab에서 Bamboo 통합을 설정합니다.

GitLab 구성#

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
  3. Atlassian Bamboo를 선택합니다.
  4. Active 확인란이 선택되어 있는지 확인합니다.
  5. Bamboo 서버의 기본 URL을 입력합니다. 예를 들어, https://bamboo.example.com.
  6. 선택 사항. Enable SSL verification 확인란을 지워 SSL 검증을 비활성화합니다.
  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 빌드 변수를 사용하는 스크립트를 사용하여 다음을 수행할 수 있습니다:

  • 빌드 상태로 커밋을 업데이트합니다.
  • Bamboo 빌드 계획 URL을 커밋의 target_url로 추가합니다.

예를 들어:

  1. api 범위가 설정된 개인 접근 토큰을 생성합니다.

  2. 토큰을 Bamboo의 $GITLAB_TOKEN 변수로 저장합니다.

  3. 다음 스크립트를 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에서 빌드 로그를 볼 수 있는 기능이 포함되지만 이에 국한되지 않습니다.

Atlassian Bamboo

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab에서 프로젝트에 변경 사항을 푸시할 때 Atlassian Bamboo에서 빌드를 자동으로 트리거할 수 있습니다. Bamboo는 웹훅 및 커밋 데이터를 수락할 때 기존 빌드 시스템과 동일한 기능을 제공하지 않습니다.

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

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

Bamboo 구성#

  1. Bamboo에서 빌드 계획으로 이동하여 Actions > Configure plan을 선택합니다.
  2. Triggers 탭을 선택합니다.
  3. Add trigger를 선택합니다.
  4. GitLab trigger와 같은 설명을 입력합니다.
  5. Repository triggers the build when changes are committed를 선택합니다.
  6. 하나 이상의 리포지터리에 대한 확인란을 선택합니다.
  7. Trigger IP addresses에 GitLab IP 주소를 입력합니다. 이 IP 주소는 Bamboo 빌드를 트리거하도록 허용됩니다.
  8. 트리거를 저장합니다.
  9. 왼쪽 창에서 빌드 단계를 선택합니다. 빌드 단계가 여러 개인 경우 Git 체크아웃 태스크가 포함된 마지막 단계를 선택합니다.
  10. Miscellaneous 탭을 선택합니다.
  11. Pattern Match Labeling 아래에서 Labels${bamboo.repository.revision.number}를 입력합니다.
  12. Save를 선택합니다.

Bamboo가 GitLab의 트리거를 받을 준비가 되었습니다. 다음으로 GitLab에서 Bamboo 통합을 설정합니다.

GitLab 구성#

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
  3. Atlassian Bamboo를 선택합니다.
  4. Active 확인란이 선택되어 있는지 확인합니다.
  5. Bamboo 서버의 기본 URL을 입력합니다. 예를 들어, https://bamboo.example.com.
  6. 선택 사항. Enable SSL verification 확인란을 지워 SSL 검증을 비활성화합니다.
  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 빌드 변수를 사용하는 스크립트를 사용하여 다음을 수행할 수 있습니다:

  • 빌드 상태로 커밋을 업데이트합니다.
  • Bamboo 빌드 계획 URL을 커밋의 target_url로 추가합니다.

예를 들어:

  1. api 범위가 설정된 개인 접근 토큰을 생성합니다.

  2. 토큰을 Bamboo의 $GITLAB_TOKEN 변수로 저장합니다.

  3. 다음 스크립트를 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에서 빌드 로그를 볼 수 있는 기능이 포함되지만 이에 국한되지 않습니다.