Cloud Build を使用すると、Bitbucket Server でホストされているリポジトリからビルドするトリガーを作成できます。Bitbucket Server リポジトリに関連付けられた commit push やマージ リクエストなどのイベントに応答してビルドを実行できます。
このページでは、Bitbucket Server インスタンスでビルドトリガーを有効にする方法について説明します。詳細については、Cloud Build トリガーと Cloud Build リポジトリをご覧ください。
始める前に
-
Enable the Cloud Build and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Bitbucket Server リポジトリのトリガーを作成するには、 Google Cloud とリポジトリの間に接続が必要です。Developer Connect を介して接続を作成するには、Developer Connect のドキュメントの Bitbucket データセンターに接続するをご覧ください。
Bitbucket Server トリガーを作成する
このセクションでは、Bitbucket Server リポジトリを Cloud Build に接続し、接続されたリポジトリに自動的にビルドを起動するトリガーを作成する方法について説明します。プライベート ネットワークで Bitbucket Server トリガーを使用する場合は、プライベート ネットワークで Bitbucket Server からのリポジトリのビルドをご覧ください。
Google Cloud コンソール
Google Cloud コンソールを使用して Bitbucket Server トリガーを作成するには、次の操作を行います。
Google Cloud コンソールで [トリガー] ページを開きます。
Google Cloud プロジェクトを選択し、[開く] をクリックします。
[トリガーを作成] をクリックします。
次のトリガー設定を入力します。
名前: トリガーの名前を入力します。
リージョン: トリガーのリージョンを選択します。
- トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されている場合、Cloud Build は、そのプライベート プールを使用してビルドを実行します。この場合、トリガーで指定するリージョンは、プライベート プールを作成したリージョンと一致する必要があります。
- トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されていない場合、Cloud Build はデフォルトのプールを使用してトリガーと同じリージョンでビルドを実行します。
説明(省略可): トリガーの説明を入力します。
イベント: トリガーを起動するリポジトリ イベントを選択します。
ブランチに push する: 特定のブランチに対して commit が行われたときにビルドを開始するトリガーを設定します。
新しいタグを push する: 特定のタグを含む commit が行われたときにビルドを開始するトリガーを設定します。
pull リクエスト: pull リクエストの commit が行われたときにビルドを開始するトリガーを設定します。
ソース: Bitbucket Server リポジトリに関する情報を構成します。
- リポジトリ サービス: Developer Connect を選択します。
リポジトリ: 使用可能なリポジトリのリストからリポジトリを選択します。
ブランチまたはタグ: ブランチまたはタグの値にマッチングさせる正規表現を指定します。有効な正規表現の構文については、RE2 構文をご覧ください。
コメント制御: イベントとして pull リクエストを選択した場合は、ビルドをトリガーによって自動的に実行するかどうか、次のいずれかのオプションを選択します。
必須(オーナーと共同編集者を除く): pull リクエストがリポジトリ所有者または共同編集者によって作成または更新されると、ビルドが自動的にトリガーによって実行されます。外部の投稿者がアクションを開始する場合、その pull リクエストで所有者または共同編集者が
/gcbrunにコメントした後にのみビルドが実行されます。必須: 投稿者を問わず pull リクエストが作成または更新されると、所有者または共同編集者が pull リクエストに
/gcbrunとコメントした後にのみビルドが実行されます。ビルドは、pull リクエストが変更されるたびに実行されます。不要: 投稿者を問わず pull リクエストが作成または更新されると、ビルドが自動的にトリガーで実行されます。
構成: リポジトリにあるビルド構成ファイルを選択するか、トリガーでインライン ビルドを構成します。
タイプ: ビルドに使用する構成のタイプを選択します。
- Cloud Build 構成ファイル(yaml または json): 構成にビルド構成ファイルを使用します。
- Dockerfile: 構成には
Dockerfileを使用します。
場所: 構成の場所を指定します。
リポジトリ: 構成ファイルがリポジトリにある場合は、ビルド構成ファイルまたは
Dockerfileディレクトリの場所と生成されたイメージの名前を指定します。構成がDockerfileの場合は、必要に応じてビルドのタイムアウトを指定できます。Dockerfileとイメージ名を指定すると、ビルドのdocker buildコマンドのプレビューが表示されます。インライン: 構成オプションとして Cloud Build 構成ファイル(yaml または json)を選択した場合、インライン ビルド構成を指定できます。Google Cloud コンソールで [エディタを開く] をクリックして、YAML または JSON 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。
[作成] をクリックして Bitbucket Cloud トリガーを作成します。
gcloud CLI
gcloud コマンドを使用して Bitbucket Server トリガーを作成するには、次のコマンドを実行します。
gcloud alpha builds triggers create developer connect
--name=TRIGGER_NAME \
--git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
--branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
--build-config=BUILD_CONFIG_FILE \
--region=REGION \
--service-account=SERVICE-ACCOUNT
ここで
- TRIGGER_NAME はトリガーの名前です。
- PROJECT_ID は Google Cloud プロジェクト ID です。
- REGION はトリガーのリージョンです。
- CONNECTION_NAME は、Bitbucket Server 接続の名前です。
- GIT_REPOSITORY_LINK は Git リポジトリへのリンクです。
- BRANCH_PATTERN は、ビルドを呼び出すリポジトリ内のブランチ名です。
- TAG_PATTERN は、ビルドを呼び出すリポジトリ内のタグ名です。
- BUILD_CONFIG_FILE はビルド構成ファイルのパスです。
- SERVICE-ACCOUNT は、トリガーとビルド オペレーションに使用するサービス アカウントです。
API
API を使用して Bitbucket Server トリガーを作成するには、次の JSON テンプレートを使用します。
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"developer_connect_config": {
"git_repository_link": "PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME",
"git_repository_link_type": "BITBUCKET_SERVER",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
ここで
- PROJECT_ID は Google Cloud プロジェクト ID です。
- REGION はトリガーのリージョンです。
- CONNECTION_NAME は、Bitbucket Server 接続の名前です。
- GIT_REPOSITORY_LINK は Git リポジトリへのリンクです。
- REPO_NAME はリポジトリの名前です。
- 「PULL_REQUEST_FILTER」は
PullRequestFilterのインスタンスです。これは、一致する pull リクエストが Bitbucket Server で作成されたときに Cloud Build がビルドをトリガーできるようにするフィルタを定義します。 - 「PUSH_FILTER」は
PushFilterのインスタンスです。これは、一致するプッシュが Bitbucket Server で行われたときに Cloud Build がビルドをトリガーできるようにするフィルタを定義します。
ターミナルで、次の 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 です。
Terraform
ビルドトリガーを作成し、Developer Connect を使用して Bitbucket Server インストールに接続する Terraform コードのサンプルについては、Terraform ドキュメントの次のトピックをご覧ください。
データ共有
Cloud Build から Bitbucket Server に送信されたデータは、トリガーを名前で識別し、Bitbucket Server でビルドの結果を確認する際に役立ちます。
次のデータは、Cloud Build と Bitbucket Server の間で共有されます。
- Google Cloud プロジェクト ID
- トリガーの名前
Bitbucket Server ではデータ共有が自動的に有効になります。
次のステップ
- ビルドトリガーを作成および管理する方法を学習する。
- プライベート ネットワークに Bitbucket Server からリポジトリをビルドする方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。