プライベート ネットワークで GitLab Enterprise Edition からリポジトリをビルドする

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

このページでは、インスタンスがプライベート ネットワークでホストされている場合に、GitLab Enterprise Edition インスタンスでトリガー機能を有効にする方法について説明します。

準備

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

    API を有効にする

プライベート ネットワークで GitLab Enterprise Edition からリポジトリをビルドする

GitLab Enterprise Edition インスタンスが VPC ネットワーク内でのみアクセスできる場合は、Service Directory サービスを設定し、プライベート プールを使用してビルドする必要があります。VPC ネットワークを含むプロジェクトは、Service Directory サービスを含むプロジェクトとは異なるプロジェクトに存在できます。トリガーを作成する前に、以下の手順でインスタンスに到達可能であることを確認します。

  1. Service Directory API を有効にします。

  2. Service Directory サービスを作成する Google Cloud プロジェクトに プロジェクト IAM 管理者ロールが付与されていることを確認します。IAM ロールを付与する方法については、Cloud Build リソースへのアクセスの構成をご覧ください。

  3. 次の手順に従って、Service Directory サービスを設定します。

    1. Google Cloud プロジェクトの名前空間を構成します。

      名前空間で指定したリージョンは、Cloud Build ホスト接続で指定したリージョンと一致する必要があります

    2. 名前空間でサービスを構成します。

    3. 登録したサービスのエンドポイントを構成します。

      エンドポイントを構成する際、Cloud Build がサービスに到達するためには、内部 IP アドレスを使用し、HTTPS ポート番号を指定する必要があります

    プライベート ネットワーク アクセスの構成の詳細については、プライベート ネットワーク アクセスを構成するをご覧ください。Service Directory は、ロードバランサや Google Kubernetes Engine(GKE)などのサービスと統合することもできます。詳細については、Service Directory とロード バランシングの概要か、GKE 向け Service Directory の概要をご覧ください。

  4. Cloud Build サービス エージェントに Service Directory へのアクセス権を付与します。

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_SERVICE_DIRECTORY_RESOURCE \
       --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
       --role="roles/servicedirectory.viewer"
    

    ここで

    • PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY_RESOURCE は、Service Directory リソースを含むプロジェクト ID です。
  5. Cloud Build サービス アカウント service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.comService Directory 閲覧者ロールを付与します。

  6. Private Service Connect の承認済みサービスロールを Cloud Build サービス アカウントに付与して、VPC ネットワーク リソース service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com へのアクセスを許可します。VPC ネットワークを含むプロジェクトでロールを付与する必要があります。

  7. プライベート プールを使用してビルドを実行します。プライベート プールを作成していない場合は、新しいプライベート プールを作成をご覧ください。

  8. GitLab Enterprise Edition トリガーを作成するの手順に沿って、GitLab Enterprise Edition インスタンスでホストされているリポジトリを作成します。

    GitLab Enterprise Edition ホストを Cloud Build に接続するときに自己署名証明書または非公開証明書を含める場合は、ホスト URI を証明書のサブジェクト代替名(SAN)として設定する必要があります

これで GitLab Enterprise Edition トリガーが、構成に基づいて GitLab Enterprise Edition インスタンス上でビルドを自動的に呼び出すようになりました。

データ共有

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

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

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

次のステップ