Cloud Build を使用すると、GitHub Enterprise インスタンスでトリガーを作成できます。このページでは、GitHub Enterprise トリガーを使用して、GitHub Enterprise インスタンスからの commit または pull リクエストに応答してビルドを呼び出す方法と、インスタンスがプライベート・ネットワークでホストされている場合に GitHub Enterprise からリポジトリをビルドする方法について説明します。
準備
- 
  
  
    
      Enable the Cloud Build and Service Directory 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.
- プライベート プールを作成していない場合は、プライベート プールの作成と管理の手順に沿ってプライベート プールを作成します。プライベート ネットワークでビルドするには、プライベート プールが必要です。
プライベート ネットワーク内の GitHub Enterprise からリポジトリをビルドする
プライベート ネットワークから GitHub Enterprise インスタンスを Cloud Build に接続するには、次の手順を行います。
- Service Directory に Cloud Build サービス エージェントへのアクセス権を付与します。 - 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 \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.viewer"- 以下を置き換えます。 - PROJECT_ID は Cloud Build のプロジェクト ID です。
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY は、Service Directory を含むGoogle Cloud プロジェクトの ID です。
 
- Cloud Build サービス エージェントに VPC ネットワーク リソースへのアクセス権を付与します。 - 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_NETWORK_RESOURCE \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.pscAuthorizedService"- 以下を置き換えます。 - PROJECT_ID は Cloud Build のプロジェクト ID です。
- PROJECT_ID_CONTAINING_NETWORK_RESOURCE は、ネットワーク リソースを含むGoogle Cloud プロジェクトの ID です。
 
- 次の手順に沿って、Service Directory サービスを設定します。 - サービスの名前空間を構成します。 - gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY- 以下を置き換えます。 - NAMESPACE は Service Directory 名前空間の名前です。
- LOCATION は、接続を作成してリポジトリをリンクするリージョンです。
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY は、Service Directory を含むGoogle Cloud プロジェクトの ID です。
 
- 名前空間のサービスを構成します。 - gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION- 以下を置き換えます。 - SERVICE は、Service Directory リソースの名前です。
- NAMESPACE は Service Directory 名前空間の名前です。
- LOCATION は、接続を作成してリポジトリをリンクするリージョンです。
 
- サービスのエンドポイントを構成します。 - gcloud service-directory endpoints create ENDPOINT_NAME \ --namespace=NAMESPACE \ --service=SERVICE \ --location=LOCATION \ --address=INSTANCE_IP_ADDRESS \ --port=PORT \ --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/global/networks/NETWORK- 以下を置き換えます。 - ENDPOINT_NAME は、エンドポイントの名前です。
- NAMESPACE は Service Directory 名前空間の名前です。
- SERVICE は、Service Directory リソースの名前です。
- LOCATION は、接続を作成してリポジトリをリンクするリージョンです。
- INSTANCE_IP_ADDRESS は、ネットワーク内の GitHub Enterprise インスタンスの IP アドレスです。例: 123.45.67.89詳細については、Service Directory を使用して Google Cloud外のホストにアクセスするをご覧ください。
- PORT は、HTTPS のポートの名前です。
- PROJECT_ID_CONTAINING_NETWORK は、VPC ネットワークを含む Google Cloud プロジェクト ID です。
- NETWORK は VPC ネットワークの名前です。
 
 - これで、サービス リソース( - projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE})を使用して、次の手順で接続を作成できるようになりました。
- GitHub Enterprise インスタンスでホストされているリポジトリをビルドするために、GitHub Enterprise トリガーを作成します。 
Service Directory を使用して Google Cloud外のホストにアクセスする
Service Directory は、IP アドレス範囲 35.199.192.0/19 を使用して Google Cloud外のホストを接続します。この範囲をファイアウォールの許可リストに追加する必要があります。さらに、この範囲を Cloud VPN または Cloud Interconnect 接続経由でルーティングするようにプライベート ネットワークを構成する必要があります。
接続で Cloud Router を使用する場合は、プライベート ネットワークへの範囲を通信するように接続を構成できます。
詳細については、プライベート ネットワーク アクセスを構成するをご覧ください。
Cloud Load Balancing を使用して Google Cloud外のホストにアクセスする
ネットワーク構成で Service Directory の IP アドレス範囲 35.199.192.0/19 を Cloud VPN または Cloud Interconnect にルーティングできない場合は、Cloud Load Balancer を使用してロードバランサを作成して、トラフィックをホストに転送できます。
Service Directory エンドポイントを作成するときは、ホストの IP アドレスではなく、ロードバランサの転送ルールの IP アドレスを使用してください。エンドポイントの作成時に、内部 HTTPS ロードバランサまたは内部伝送制御プロトコル(TCP)ロードバランサを使用できます。
TCP ロードバランサを作成する場合は、次の点を考慮してください。
- ホストに到達するには、ハイブリッド接続ネットワーク エンドポイント グループ(NEG)のみが必要です。
- TCP ロードバランサでは、SSL 証明書用に暗号化されていない秘密鍵は必要ありません。
- Cloud VPN の設定では、グローバル動的ルーティングで Cloud Router を使用する必要があります。Cloud VPN で静的ルーティングが使用されている場合は、代わりに Cloud Service Mesh を使用するプロキシを使用できます。詳細については、ハイブリッド デプロイ用にネットワーク エッジ サービスを設定するをご覧ください。
HTTPS ロードバランサの作成の詳細については、ハイブリッド接続で内部アプリケーション ロードバランサを設定するをご覧ください。TCP ロードバランサの作成の詳細については、ハイブリッド接続でリージョン内部プロキシ ネットワーク ロードバランサを設定するをご覧ください。
次のステップ
- ビルドトリガーを作成および管理する方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。