アトラシアン バンブー

GitLab でプロジェクトに変更をプッシュすると、Atlassian Bamboo で自動的にビルドをトリガーできます。

Bamboo は Webhook やコミットデータを受け入れる際に、従来のビルドシステムと同じ機能を提供しません。GitLab でインテグレーションを設定する前に、Bamboo のビルドプランを設定する必要があります。

Bamboo の設定

  1. Bamboo で、ビルドプランに移動し、Actions > Configure plan を選択します。
  2. Triggersタブを選択します。
  3. トリガーを追加]を選択します。
  4. GitLab trigger のような説明を入力します。
  5. リポジトリ] を選択すると、変更がコミットされたときにビルドがトリガーされます。
  6. 1つ以上のリポジトリにチェックを入れます。
  7. Trigger IP addresses に GitLab IP アドレスを入力します。これらの IP アドレスが Bamboo ビルドのトリガーとして許可されます。
  8. トリガーを保存します。
  9. 左側のペインで、ビルドステージを選択します。複数のビルドステージがある場合は、Gitチェックアウトタスクを含む最後のステージを選択します。
  10. Miscellaneousタブを選択します。
  11. Pattern Match Labeling」の下に「${bamboo.repository.revision.number} inLabels」と入力します。
  12. Save を選択します。

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. オプション。Test settingsを選択します。
  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 plan のジョブの最後のタスクとして追加します:

    #!/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/ee/user/project/integrations/bamboo.html
    # 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 we use SSH or 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")
       
    # 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 アドレスが入力されているか確認してください。また、インテグレーション Webhook のログにリクエストの失敗がないか確認してください。

GitLab UI では利用できない Atlassian Bamboo の高度な機能

Atlassian Bamboo の高度な機能は GitLab と互換性がありません。これらの機能には、GitLab UI からビルドログを見る機能が含まれますが、これらに限定されません。