Bitbucket Server からリポジトリをビルドする

Cloud Build を使用すると、Bitbucket Server でホストされているリポジトリからビルドするトリガーを作成できます。これにより、Bitbucket Server リポジトリに関連付けられた commit プッシュや pull リクエストなどのイベントに対応してビルドを実行できます。

このページでは、Bitbucket Server インスタンスでトリガー機能を有効にする方法について説明します。

準備

  • Cloud Build, Secret Manager, and Compute Engine API を有効にします。

    API を有効にする

Bitbucket Server のトリガーの作成

このセクションでは、Bitbucket Server リポジトリを Cloud Build に接続し、接続されたリポジトリに自動的にビルドを起動するトリガーを作成する方法について説明します。プライベート ネットワークで Bitbucket Server トリガーを使用する場合は、プライベート ネットワークで Bitbucket Server からのリポジトリのビルドをご覧ください。

コンソール

Google Cloud Console を使用して Bitbucket Server のトリガーを作成するには:

  1. [トリガー] ページを開く

    [トリガー] ページを開く

  2. ページ上部でプロジェクトを選択し、[開く] をクリックします。

  3. [トリガーを作成] をクリックします。

  4. 次のトリガー設定を入力します。

    • 名前: トリガーの名前。

    • リージョン: トリガーのリージョンを選択します。

      • リージョンとしてグローバルを選択した場合、Cloud Build はビルドを実行するためにデフォルトのプールを使用します。
      • 非グローバル リージョンを選択して、トリガーに関連付けられたビルド構成ファイルでプライベート プールを指定すると、Cloud Build はプライベート プールを使用してビルドを実行します。この場合、トリガーで指定するリージョンは、プライベート プールを作成したリージョンと一致する必要があります。
      • 非グローバル リージョンを選択し、トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されていない場合、Cloud Build はデフォルトのプールを使用してトリガーと同じリージョンでビルドを実行します。
    • 説明(省略可): トリガーの説明。

    • イベント: トリガーを起動するリポジトリ イベントを選択します。

      • ブランチに push する: 特定のブランチに対して commit が行われたときにビルドを開始するトリガーを設定します。

      • 新しいタグを push する: 特定のタグを含む commit が行われたときにビルドを開始するトリガーを設定します。

      • pull リクエスト: pull リクエストの commit が行われたときにビルドを開始するトリガーを設定します。

    • ソース: ソースとして [第 1 世代] を選択します。

      • リポジトリ: 使用可能なリポジトリのリストからリポジトリを選択します。新しいリポジトリに接続するには、Bitbucket Server リポジトリに接続するをご覧ください。

      • ブランチまたはタグ: ブランチまたはタグの値にマッチングさせる正規表現を指定します。

      • コメント制御: イベントとして pull リクエストを選択した場合は、非コメント イベントにビルドをトリガーする追加のインタラクションが必要かどうかを制御する設定を選択できます。次のいずれかのオプションを選択して、トリガーによって自動的にビルドを実行するかどうかを制御します。

        • 必須(オーナーと共同編集者を除く): pull リクエストがリポジトリ所有者または共同編集者によって作成または更新されると、ビルドが自動的にトリガーによって実行されます。外部の投稿者がアクションを開始する場合、その pull リクエストで所有者または書き込み権限を持つユーザーが /gcbrun にコメントした後にのみビルドが実行されます。詳しくは、COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY をご覧ください。

        • 必須: 書き込み権限を持つユーザーが pull リクエストを作成し、pull リクエストの説明に /gcbrun が含まれている場合、ビルドは pull リクエストの作成時に実行されます。pull リクエストが他の寄与者によって作成または更新されると、その pull リクエストで所有者または書き込み権限を持つユーザーが /gcbrun にコメントした後にのみビルドが実行されます。詳しくは、COMMENTS_ENABLED をご覧ください。

        • 不要: 投稿者を問わず pull リクエストが作成または更新されると、ビルドが自動的にトリガーで実行されます。詳細については、COMMENTS_DISABLED をご覧ください。

        Bitbucket Server では、コメント以外のイベントに pull リクエストを開くアクション、変更するアクション、承認するアクションが含まれます。

        コメント イベント(コメントの追加、編集、削除など)は、書き込み権限以上を持つユーザーがコメントを入力し、コメントに /gcbrun が含まれている場合にのみビルドをトリガーします。

        Bitbucket Server イベントタイプの詳細については、Webhook の管理に関する Bitbucket ドキュメントをご覧ください。

    • 構成: リポジトリにあるビルド構成ファイルを選択するか、トリガーにインラインでビルドを構成します。

    • タイプ: ビルドに使用する構成のタイプを選択します。

      • Cloud Build 構成ファイル(yaml または json): 構成にビルド構成ファイルを使用します。
      • Dockerfile: 構成には Dockerfile を使用します。
    • 場所: 構成の場所を指定します。

      • リポジトリ: 構成ファイルがリポジトリにある場合は、ビルド構成ファイルまたは Dockerfile ディレクトリの場所と生成されたイメージの名前を指定します。構成が Dockerfile の場合は、必要に応じてビルドのタイムアウトを指定できます。Dockerfile とイメージ名を指定すると、ビルドが実行される docker build コマンドのプレビューが表示されます。

      • インライン: 構成オプションとして Cloud Build 構成ファイル(yaml または json)を選択した場合、インライン ビルド構成を指定できます。Google Cloud Console で [エディタを開く] をクリックして、YAML または JSON 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。

  5. [作成] をクリックして Bitbucket Server トリガーを作成します。

gcloud

gcloud コマンドを使用して Bitbucket Server トリガーを作成するには、ターミナルで次の「gcloud builds triggers create bitbucketserver」コマンドを実行する必要があります。

gcloud builds triggers create bitbucketserver
    --name=TRIGGER_NAME \
    --project-key=PROJECT_KEY \
    --repo-slug=REPO_SLUG \
    --bitbucket-server-config-resource=projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/ID \
    --branch-pattern=BRANCH_NAME \ # --tag-pattern=TAG_NAME
    --build-config=BUILD_CONFIG

ここで

  • TRIGGER_NAME はトリガーの名前です。
  • PROJECT_KEY は、Bitbucket Server プロジェクトのキーです。 PROJECT_KEY は、大文字と小文字が区別されます。
  • REPO_SLUG は、Bitbucket Server リポジトリのスラッグです。詳細については、リポジトリ スラッグに関する Bitbucket ガイドをご覧ください。
  • PROJECT_NUMBER は Cloud プロジェクトのプロジェクト番号です。
  • REGION は、Bitbucket Server 構成に関連付けられたリージョンです。
  • ID は、BitbucketServerConfig の ID です。
  • BRANCH_NAME は、特定のブランチをビルドするトリガーを設定する場合のブランチに一致する正規表現です。
  • TAG_NAME は、特定のタグを作成するようにトリガーを設定する場合のタグに一致する正規表現です。
  • BUILD_CONFIG は、ビルド構成ファイルへのパスです。

API

API を使用して Bitbucket Server トリガーを作成するには、次の JSON テンプレートを使用します。

{
    "filename": "cloudbuild.yaml",
    "name": "curl-trigger",
    "description": "curl trigger",
    "bitbucket_server_trigger_config": {
        "repo_slug": "REPO_SLUG",
        "project_key": "PROJECT_KEY",
        "push": {
            "branch": "BRANCH_NAME" # "tag": "TAG_NAME"
        },
        "bitbucket_server_config_resource": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/ID"
        "comment_control": "COMMENT_SETTING"
    }
}

ここで

  • REPO_SLUG は、Bitbucket Server リポジトリのスラッグです。詳細については、リポジトリ スラッグに関する Bitbucket ガイドをご覧ください。
  • PROJECT_KEY は、Bitbucket Server プロジェクトのキーです。 PROJECT_KEY は、大文字と小文字が区別されます。
  • BRANCH_NAME は、特定のブランチでビルドのトリガーを設定する場合のブランチの正規表現です。
  • TAG_NAME は、特定のタグを作成するようにトリガーを設定する場合の正規表現です。
  • PROJECT_NUMBER は Cloud プロジェクトのプロジェクト番号です。
  • REGION は、Bitbucket Server 構成に関連付けられたリージョンです。
  • ID は、BitbucketServerConfig の ID です。
  • COMMENT_SETTING は、ビルドトリガーが、実行するビルドのコメントに /gcbrun を必要とするかどうかを制御する設定です。詳細については、commentControl をご覧ください。

ターミナルで、次の curl コマンドを入力します。

curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json

ここで

  • PROJECT_NUMBER は Google Cloud プロジェクト番号です。
  • PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。

データ共有

Cloud Build から Bitbucket Server に送信されるデータにより、トリガーを名前で識別し、Bitbucket Server でビルドの結果を確認できます。

次のデータは Cloud Build と Bitbucket Server の間で共有されます。

  • Google Cloud プロジェクト ID
  • トリガーの名前

Bitbucket Server ではデータ共有が自動的に有効になります。

次のステップ