Cloud Build を使用すると、 GitLab Enterprise Edition でホストされているリポジトリからビルドするトリガーを作成できます。 GitLab Enterprise Edition リポジトリに関連付けられた commit push やマージ リクエストなどのイベントに応じてビルドを実行できます。
このページでは、GitLab Enterprise Edition インスタンスのビルドトリガーを有効にする方法について説明します。詳細については、 Cloud Build トリガーと Cloud Build リポジトリをご覧ください。
始める前に
手順に沿って GitLab Enterprise Edition ホストに接続します。Cloud Build API と Secret Manager API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。
GitLab Enterprise Edition リポジトリのトリガーを作成するには、 とリポジトリの間に接続が必要です。 Google Cloud の GitLab Enterprise Edition アプリを介して接続を作成するには、 Google Cloud GitLab Enterprise Edition リポジトリに接続するをご覧ください。
GitLab Enterprise Edition トリガーを作成する
このセクションでは、トリガーを作成して、GitLab Enterprise インストールにそのトリガーをリンクする方法について説明します。
Google Cloud コンソール
コンソールを使用して GitLab Enterprise Edition トリガーを作成するには、次の操作を行います。 Google Cloud
[トリガー] ページを開く
ページ上部で Google Cloud プロジェクトを選択し、[開く] をクリックします。
[トリガーを作成] をクリックします。
次のトリガー設定を入力します。
名前: トリガーの名前。
リージョン: トリガーのリージョンを選択します。
- トリガーに関連付けられたビルド構成ファイルで プライベート プールが指定されている場合、 Cloud Build は、そのプライベート プールを使用してビルドを実行します。この場合、トリガーで指定するリージョンは、プライベート プールを作成したリージョンと一致する必要があります。
- トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されていない 場合、Cloud Build はデフォルトの プールを使用してトリガーと同じリージョンでビルドを実行します。
説明 (省略可): トリガーの説明。
イベント: トリガーを起動するリポジトリ イベントを選択します。
ブランチに push する: 特定のブランチに対して commit が行われたときにビルドを開始するトリガーを設定します。
新しいタグを push する: 特定のタグを含む commit が行われたときにビルドを開始するトリガーを設定します。
pull リクエスト: ビルドを開始するトリガーを設定します マージ リクエストの commit が行われたときに。
ソース: GitLab Enterprise Edition リポジトリに関する情報を構成します。
リポジトリ サービス: Cloud Build を選択します。
[リポジトリの世代] : ソースとして [第 2 世代] を選択します。
リポジトリ: 使用可能なリポジトリのリストから リポジトリを選択します。
ブランチ または タグ: ブランチまたは タグの値にマッチングさせる正規表現を指定します。有効な正規表現の構文については、 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 構文を使用してビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。
[作成] をクリックして GitLab Enterprise Edition トリガーを作成します。
gcloud CLI
gcloud コマンドを使用して GitLab Enterprise Edition トリガーを作成するには、次のコマンドを実行します。
gcloud builds triggers create gitlab \
--name=TRIGGER_NAME \
--repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/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 はトリガーの region です。
- CONNECTION_NAME は GitLab Enterprise エディションの接続の名前です。
- REPO_NAME はリポジトリの名前です
- BRANCH_PATTERN は、ビルドを呼び出すリポジトリ内のブランチ名です。
- TAG_PATTERN は、ビルドを呼び出すリポジトリ内のタグ名です。
- BUILD_CONFIG_FILE はビルド 構成ファイルのパスです。
- SERVICE-ACCOUNT は、トリガーとビルド オペレーションに使用するサービス アカウントです。
API
API を使用して GitLab Enterprise Edition トリガーを作成するには、次の JSON テンプレートを使用します。
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"repository_event_config": {
"repository": "REPO_NAME",
"repository_type": "GITLAB_ENTERPRISE",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
ここで
- "REPO_NAME" は、Cloud Build で構成したリポジトリ 接続の名前です。
- "PULL_REQUEST_FILTER" は
PullRequestFilterのインスタンスです。これは、GitLab Enterprise Edition で一致する pull リクエストが行われたときに Cloud Build がビルドをトリガーできるようにするフィルタ を定義します。 - "PUSH_FILTER" は
PushFilterのインスタンスです。これは、GitLab Enterprise Edition で一致する push が行われたときに 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 です。
データ共有
Cloud Build から GitLab Enterprise Edition に送信されたデータは、トリガーを名前で識別し、GitLab Enterprise Edition リポジトリでビルドの結果を確認する際に役立ちます。
次のデータは、Cloud Build と GitLab Enterprise Edition ホストの間で共有されます。
- Google Cloud プロジェクト ID
- トリガーの名前
次のステップ
- ビルドトリガーを管理する方法を学習する。
- プライベート ネットワークで GitLab Enterprise Edition からリポジトリをビルドする方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。