アトラシアン バンブー
GitLab でプロジェクトに変更をプッシュすると、Atlassian Bamboo で自動的にビルドをトリガーできます。
Bamboo は Webhook やコミットデータを受け入れる際に、従来のビルドシステムと同じ機能を提供しません。GitLab でインテグレーションを設定する前に、Bamboo のビルドプランを設定する必要があります。
Bamboo の設定
- Bamboo で、ビルドプランに移動し、Actions > Configure plan を選択します。
- Triggersタブを選択します。
- トリガーを追加]を選択します。
-
GitLab trigger
のような説明を入力します。 - リポジトリ] を選択すると、変更がコミットされたときにビルドがトリガーされます。
- 1つ以上のリポジトリにチェックを入れます。
- Trigger IP addresses に GitLab IP アドレスを入力します。これらの IP アドレスが Bamboo ビルドのトリガーとして許可されます。
- トリガーを保存します。
- 左側のペインで、ビルドステージを選択します。複数のビルドステージがある場合は、Gitチェックアウトタスクを含む最後のステージを選択します。
- Miscellaneousタブを選択します。
-
Pattern Match Labeling」の下に「
${bamboo.repository.revision.number}
inLabels」と入力します。 - Save を選択します。
Bamboo は GitLab からのトリガーを受け入れる準備ができました。次に、GitLab で Bamboo インテグレーションを設定します。
GitLab の設定
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定]>[インテグレーション]を選択します。
- Atlassian Bamboo を選択します。
- アクティブ] チェックボックスが選択されていることを確認します。
- Bamboo サーバのベース URL を入力します。たとえば、
https://bamboo.example.com
. - オプション。SSL検証を無効にするには、[SSL検証を有効にする]チェックボックスをオフにします。
- Bamboo のビルドプランからビルドキーを入力します。
- 必要であれば、ビルドプランを起動するアクセス権を持つ Bamboo ユーザのユーザ名とパスワードを入力します。認証を必要としない場合は、これらのフィールドは空白のままにしておいてください。
- オプション。Test settingsを選択します。
- 変更を保存を選択します。
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 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 からビルドログを見る機能が含まれますが、これらに限定されません。