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

Cloud Build を使用すると、GitLab でホストされているリポジトリからビルドするトリガーを作成できます。GitLab リポジトリに関連付けられた commit の push やマージ リクエストなどのイベントに応答してビルドを実行できます。

このページでは、GitLab インスタンスでビルドトリガーを有効にする方法について説明します。詳細については、Cloud Build トリガーCloud Build リポジトリをご覧ください。

始める前に

手順に沿って GitLab ホストに接続します。
  • 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

GitLab リポジトリのトリガーを作成するには、 Google Cloud とリポジトリ間の接続が必要です。 Google Cloudの GitLab アプリを使用して接続を作成するには、GitLab リポジトリに接続するをご覧ください。

GitLab トリガーを作成する

このセクションでは、トリガーを作成して GitLab インストールにリンクする方法について説明します。

Google Cloud コンソール

Google Cloud コンソールを使用して GitLab トリガーを作成するには、次の操作を行います。

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

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

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

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

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

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

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

           * If the build config file associated with the trigger specifies a
           [private pool](/build/docs/private-pools/private-pools-overview), then
           Cloud Build uses the private pool to run your build. In this
           case, the region you specify in your trigger must match the region
           where you created your private pool.
           * If the build config file associated with the trigger **doesn't**
           specify a private pool, then Cloud Build uses the default
           pool to run your build in the same region as your trigger.
      

    • 説明(省略可): トリガーの説明。

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

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

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

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

    • ソース: GitLab リポジトリに関する情報を構成します。

      • リポジトリ サービス: Cloud Build を選択します。

      • リポジトリの生成: ソースとして [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 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。

  5. [作成] をクリックして GitLab Enterprise Edition トリガーを作成します。

gcloud CLI

gcloud コマンドを使用して GitLab トリガーを作成するには、次のコマンドを実行します。

    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 は GitLab 接続の名前です。
  • GIT_REPOSITORY_LINK は Git リポジトリへのリンクです。
  • BRANCH_PATTERN は、ビルドを呼び出すリポジトリ内のブランチ名です。
  • TAG_PATTERN は、ビルドを呼び出すリポジトリ内のタグ名です。
  • BUILD_CONFIG_FILE はビルド構成ファイルのパスです。
  • SERVICE-ACCOUNT は、トリガーとビルド オペレーションに使用するサービス アカウントです。

API

API を使用して GitLab トリガーを作成するには、次の 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": "GITLAB",
      // Field filter must be only one of the following:
      "pullRequest": "PULL_REQUEST_FILTER",
      "push": "PUSH_FILTER"
   }
}

ここで

  • PROJECT_ID は Google Cloud プロジェクト ID です。
  • REGION はトリガーのリージョンです。
  • CONNECTION_NAME は GitLab 接続の名前です。
  • GIT_REPOSITORY_LINK は Git リポジトリへのリンクです。
  • REPO_NAME はリポジトリの名前です。
  • PULL_REQUEST_FILTER」は PullRequestFilter のインスタンスです。これは、一致する pull リクエストが GitLab で作成されたときに Cloud Build がビルドをトリガーできるようにするフィルタを定義します。
  • PUSH_FILTER」は PushFilter のインスタンスです。これは、一致する push が GitLab で行われたときに 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 を使用して GitLab インストールに接続する Terraform コードのサンプルについては、Terraform ドキュメントの次のトピックをご覧ください。

データ共有

Cloud Build から GitLab に送信されたデータは、トリガーを名前で識別し、GitLab リポジトリでビルドの結果を確認する際に役立ちます。

次のデータは、Cloud Build と GitLab ホストの間で共有されます。

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

次のステップ