GitHub からのリポジトリのビルド

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

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

始める前に

  • Cloud Build API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API の有効化

GitHub リポジトリのトリガーを作成するには、 Google Cloud とリポジトリ間の接続が必要です。Developer Connect を介して接続を作成するには、Developer Connect のドキュメントの GitHub に接続するをご覧ください。

GitHub トリガーを作成する

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

Google Cloud コンソール

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

  1. Google Cloud コンソールで [トリガー] ページを開きます。

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

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

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

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

    • 名前: トリガーの名前を入力します。

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

      • トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されている場合、Cloud Build は、そのプライベート プールを使用してビルドを実行します。この場合、トリガーで指定するリージョンは、プライベート プールを作成したリージョンと一致する必要があります。
      • トリガーに関連付けられたビルド構成ファイルでプライベート プールが指定されていない場合、Cloud Build はデフォルトのプールを使用してトリガーと同じリージョンでビルドを実行します。

    • 説明(省略可): トリガーの説明を入力します。

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

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

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

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

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

      • リポジトリ サービス: Developer Connect を選択します。
      • リポジトリ: 使用可能なリポジトリのリストからリポジトリを選択します。

      • ブランチまたはタグ: ブランチまたはタグの値にマッチングさせる正規表現を指定します。有効な正規表現の構文については、RE2 構文をご覧ください。

      • コメント制御: イベントとして pull リクエストを選択した場合は、ビルドをトリガーによって自動的に実行するかどうか、次のいずれかのオプションを選択します。

        • 必須(オーナーと共同編集者を除く): pull リクエストがリポジトリ所有者または共同編集者によって作成または更新されると、ビルドが自動的にトリガーによって実行されます。外部の投稿者がアクションを開始する場合、その pull リクエストで所有者または共同編集者が /gcbrun にコメントした後にのみビルドが実行されます。

        • 必須: 投稿者を問わず pull リクエストが作成または更新されると、所有者または共同編集者が pull リクエストに /gcbrun とコメントした後にのみビルドが実行されます。ビルドは、pull リクエストが変更されるたびに実行されます。

        • 不要: 投稿者を問わず pull リクエストが作成または更新されると、ビルドが自動的にトリガーで実行されます。

    • 構成: ビルドに使用するリモート リポジトリにあるビルド構成ファイルを選択するか、インライン ビルド構成ファイルを作成します。

      • タイプ: ビルドに使用する構成のタイプを選択します。
        • 自動検出: リポジトリに cloudbuild.yaml または Dockerfile がある場合、Cloud Build は構成タイプを自動的に検出します。
        • Cloud Build 構成ファイル(yaml または json): 構成にビルド構成ファイルを使用します。
        • Dockerfile: 構成には Dockerfile を使用します。
        • Buildpacks: 構成には Buildpacks を使用します。
      • 場所: 構成の場所を指定します。

        • リポジトリ: 構成ファイルがリモート リポジトリにある場合は、ビルド構成ファイルまたは Dockerfile ディレクトリの場所と生成されたイメージの名前を指定します。構成が Dockerfile の場合は、必要に応じてビルドのタイムアウトを指定できます。Dockerfile とイメージ名を指定すると、ビルドが実行される docker build コマンドのプレビューが表示されます。
        • インライン: 構成オプションとして Cloud Build 構成ファイル(yaml または json)を選択した場合、インライン ビルド構成を指定できます。Google Cloud コンソールで [エディタを開く] をクリックして、YAML または JSON 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。
    • 代入変数(省略可): ビルドの構成オプションとして Cloud Build 構成ファイルを選択した場合、このフィールドを使用して、トリガー固有の代入変数を定義できます。たとえば、複数のトリガーを作成し、それぞれのトリガーが特定の環境にアプリをデプロイするとします。この場合、アプリケーションが 1 つの環境にデプロイされることをビルド構成ファイルに指定し、このフィールドを使用して代入変数を定義して、このトリガーがデプロイされる環境を指定できます。ビルド構成ファイルに代入値を指定する方法については、変数値の置換をご覧ください。

    • ビルドログ(省略可): チェックボックスをオンにすると、ビルドログが GitHub に送信されます。ビルドログを表示する方法については、ビルドログの表示をご覧ください。

    • サービス アカウント: トリガーを呼び出すときに使用するサービス アカウントを選択します。組織のポリシーで以前の Cloud Build サービス アカウントの使用が許可されている場合は、このフィールドを空白のままにして、以前のサービス アカウントを使用できます。それ以外の場合は、Compute Engine のデフォルトのサービス アカウントであっても、使用する特定のサービス アカウントを選択する必要があります。

  5. [作成] をクリックして、ビルドトリガーを保存します。

gcloud コマンドを使用して GitHub トリガーを作成するには、ビルドトリガーの作成gcloud コマンドをご覧ください。

gcloud CLI

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

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

API

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

ここで

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

変更をビルドして表示する

GitHub トリガーを使用してビルドするには、接続されたソース リポジトリに変更を push して commit するか、pull リクエストでビルドを構成する必要があります。変更をチェックインすると、Cloud Build がコードをビルドします。

GitHub でビルドの変更を確認するには、リポジトリの チェック タブに移動します。

[conversation] タブのスクリーンショット

Cloud Build が変更をビルドしたことを確認できます。また、コードのビルドに要した時間やビルド ID など、ビルドに関するその他の詳細も表示されます。

ビルドの変更を Cloud Build で表示するには、[View more details on Google Cloud Build] をクリックします。 Google Cloud コンソールで [ビルドの詳細] ページが開き、ステータス、ログ、ビルドステップなどのビルド情報が表示されます。

データ共有

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

現在、次のデータが Cloud Build と GitHub の間で共有されています。

  • Cloud プロジェクト ID
  • トリガーの名前
  • ビルドログ

2020 年 8 月より前にトリガーを作成した場合、プロジェクトでデータ共有が有効になっていない可能性があります。Cloud Build データ共有タブの [有効にする] をクリックすることで、プロジェクト内のすべての GitHub トリガーに対してデータ共有を有効にできます。

GitHub リポジトリで必須ステータス チェックを有効にしている場合、データ共有を有効にするとステータス チェックが一時的に中断する場合があります。次の方法で、ステータス チェックの設定を調整してトリガー名を検索できます。

  • GitHub リポジトリで Cloud Build 固有の必須チェックをすべて無効にする
  • Cloud Build でデータ共有が有効になっていることを確認する
  • Cloud Build でステータスをリポジトリに送信する新しいビルドを実行する
  • 必要なステータス チェックを再び有効にし、トリガー名を選択する

次のステップ