正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Atlassian Bamboo

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

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

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

Bambooを設定する

  1. Bambooで、ビルドプランに移動し、アクション > Configure plan(プランを設定)を選択します。
  2. Triggers(トリガー)タブを選択します。
  3. Add trigger(トリガーの追加)を選択します。
  4. GitLab triggerのような説明を入力します。
  5. Repository triggers the build when changes are committed(変更がコミットされたときにリポジトリがビルドをトリガーする)を選択します。
  6. 1つ以上のリポジトリのチェックボックスを選択します。
  7. Trigger IP addresses(トリガーIPアドレス)にGitLabのIPアドレスを入力します。これらのIPアドレスは、Bambooのビルドをトリガーすることが許可されています。
  8. トリガーを保存します。
  9. 左側のペインで、ビルドステージを選択します。複数のビルドステージがある場合は、Gitチェックアウトタスクを含む最後のステージを選択します。
  10. その他タブを選択します。
  11. Pattern Match Labeling(パターン一致のラベル付け)で、ラベル${bamboo.repository.revision.number}を入力します。
  12. 保存を選択します。

Bambooは、GitLabからのトリガーを受け入れる準備ができました。次に、GitLabでBambooインテグレーションを設定します。

GitLabを設定する

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > インテグレーションを選択します。
  3. Atlassian Bambooを選択します。
  4. 有効チェックボックスが選択されていることを確認します。
  5. BambooサーバーのベースURLを入力します。たとえばhttps://bamboo.example.comなどです。
  6. オプション。SSLの検証を有効にするを無効にするには、SSL証明書検証を有効にするチェックボックスをオフにします。
  7. Bambooのビルドプランからbuild keyを入力します。
  8. 必要に応じて、ビルドプランをトリガーするアクセス権を持つBambooユーザーのユーザー名とキーを入力します。認証が不要な場合は、これらのフィールドを空白のままにします。
  9. オプション。テスト設定を選択します。
  10. 変更を保存を選択します。

Bambooビルドプランのビルドキーを識別する

ビルドキーは、通常、プロジェクトキーとプランキーから作成される一意の識別子です。ビルドキーは、すべて大文字で短く、ダッシュ(-)で区切られています(例: PROJ-PLAN)。

Bambooでプランを表示すると、ビルドキーがブラウザのURLに含まれています。たとえばhttps://bamboo.example.com/browse/PROJ-PLANなどです。

GitLabでBambooのビルドステータスを更新する

commit status APIとBambooビルド変数を使用するスクリプトを使用して、次の操作を実行できます:

  • ビルドステータスでコミットを更新します。
  • BambooビルドプランURLをコミットのtarget_urlとして追加します。

例:

  1. :api権限を持つGitLabでアクセストークンを作成します。

  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/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"

トラブルシューティング

ビルドがトリガーされない

ビルドがトリガーされない場合は、Trigger IP addresses(トリガーIPアドレス)のBambooに正しいGitLab IPアドレスを入力したことを確認してください。また、インテグレーションWebhookログでリクエストの失敗を確認してください。

GitLab UIでは高度なAtlassian Bamboo機能を利用できません

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