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

Cloud Build を使用すると、GitHub Enterprise インスタンスでトリガーを作成できます。このページでは、GitHub Enterprise トリガーを使用して、GitHub Enterprise インスタンスからの commit または pull リクエストに応答してビルドを呼び出す方法について説明します。

始める前に

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

    API を有効にする

  • GitHub Enterprise の最新バージョンを使用していることを確認します。
  • GitHub Enterprise トリガーを有効にするリポジトリに対する管理者権限があることを確認します。
  • カスタム ドメインを GitHub Enterprise ホストにマッピングし、ホストに有効な SSL 証明書があることを確認します。

  • Cloud Build API に制限された API キーを作成します

  • GitHub Enterprise サーバーがオンプレミス環境にホストされている場合は、次の手順を行います。

  1. オンプレミス ホスト用の限定公開の Google アクセスを有効にして、GitHub Enterprise インスタンスが Google Cloud の API とサービスにアクセスできるようにします。

  2. オンプレミス ネットワークを Google Cloud にピアリングし、Virtual Private Cloud(VPC)ネットワークをセットアップします。詳細については、VPC ネットワークのピアリングをご覧ください。

  3. プライベート プールを使用してビルドを実行します。プロジェクトの環境を設定して、VPC で新しいプライベート ワーカープールを作成します(まだ行っていない場合)。プライベート ワーカープールを使用してビルドを実行する方法については、プライベート プールでのビルドの実行をご覧ください。

必要な IAM 権限

GitHub Enterprise ホストを接続するには、Cloud Build 編集者(roles/cloudbuild.builds.editorロールと Cloud Build 統合オーナー(cloudbuild.integrations.ownerロールをユーザー アカウントに追加します。

必要なロールをユーザー アカウントに追加するには、Cloud Build リソースへのアクセスの構成をご覧ください。Cloud Build に関係する IAM ロールについて詳しくは、IAM ロールと権限をご覧ください。

VPC ネットワークのピアリング

GitHub Enterprise インスタンスがオンプレミス環境でホストされ、公共のインターネット接続経由でアクセスできない場合は、オンプレミス ネットワークを Google Cloud にピアリングして VPC ネットワークを設定する必要があります。

  1. Service Networking API を有効にします
  2. 新しい VPC ネットワークを作成するか、既存の VPC ネットワークを選択します。注: オンプレミスの GitHub Enterprise インスタンスにアクセスできるように VPC ネットワークを構成する必要があります。
  3. VPC ネットワークに名前付き IP 範囲を割り当てます。Cloud Build プライベート プールで VPC ネットワークを使用するには、接頭辞の長さを /23 以下(/22/21 など)にする必要があります。
  4. VPC ネットワークと Google Cloud の間の VPC ネットワーク ピアリング接続を確立します。詳細については、プライベート接続の作成をご覧ください。
  5. GitHub Enterprise インスタンスに DNS が構成されている場合は、DNS ゾーンをサービス プロバイダに手動でピアリングする必要があります。詳細については、プライベート DNS ゾーンをサービス プロデューサーと共有するをご覧ください。
  6. [省略可] Cloud プロジェクトからネットワークをピアリングしたくない場合は、共有 VPC を設定して、代わりに Cloud プロジェクトにそのネットワークを使用させることができます(プロジェクトが組織の一部である場合)。共有 VPC は Service Networking API とピアリングする必要があります。

Cloud Build GitHub アプリケーションを作成する

GitHub Enterprise インスタンスに GitHub アプリケーションを作成する必要があります。このアプリは、Webhook イベントを Cloud Build エンドポイントに送信します。このようなイベントが受信されると、Cloud Build はペイロードを検証し、そのイベントが Cloud Build GitHub トリガーに対応する場合はビルドを実行します。GitHub Enterprise トリガーを構成するリポジトリにアプリをインストールする必要があります。

このセクションでは、GitHub アプリを作成する方法について説明します。

  1. GitHub Enterprise インスタンスにログインします。
  2. GitHub Enterprise の最新バージョンがインストールされていることを確認します。

    一部のバージョンの GitHub Enterprise では、Chrome ブラウザで次の手順を実行するために SameSite Cookie を無効にする必要がある場合があります。2.21.3 リリース以前の GitHub Enterprise を使用している場合は、SameSite Cookie を無効にする必要があります。

    1. chrome://flags/ に移動します。
    2. フィルタバーに「samesite」と入力します。
    3. SameSite by default cookies が無効になっていることを確認します。

      SameSite が無効のスクリーンショット

    4. ブラウザを再起動します。

  3. Cloud Build の [リポジトリの管理] ページを開きます。

    [リポジトリの管理] ページを開く

  4. [ホストに接続] をクリックします。

    [ホストに接続] パネルが表示され、GitHub Enterprise リポジトリを Cloud Build に接続するホスト接続を作成するよう求められます。

  5. [ホスト URL] セクションに、GitHub Enterprise インスタンスの URL を入力します。例: ghe.example.com

  6. [API キー] セクションで [生成] をクリックして API キーを生成します。既存の API キーがある場合はそのキーを入力します。

    API キーを手動で作成する場合は、次の手順を実行します。

    API キーを取得するには:

    1. Cloud Console で [認証情報] ページに移動します。

      [認証情報] ページを開く

    2. [認証情報を作成] をクリックします。

    3. [API キー] をクリックします。

      作成した API キーとともにポップアップ ボックスが表示されます。

    4. [キーを制限] をクリックします。

    5. [API の制限] で、プルダウン メニューから [Cloud Build API] を選択します。

    6. [保存] をクリックします。

  7. (省略可)[組織] セクションで、GitHub アプリを作成する組織を入力します。このセクションを空白のままにすると、アプリは現在のユーザー アカウントの下に作成されます。

  8. [省略可] [CA 証明書] セクションで [参照] をクリックして、自己署名証明書をアップロードします。証明書のサイズは 10 KB 以下の PEM 形式(.pem.cer、または .crt)にする必要があります。このセクションを空白のままにすると、デフォルトの証明書のセットが使用されます。

  9. [省略可] GitHub Enterprise インスタンスがオンプレミスでホストされ、Google Cloud にネットワークがピアリングされている場合、[ネットワーク] セクションに、ネットワークのネットワーク プロジェクトの名前とネットワーク名を入力します。

  10. [ホストに接続] をクリックします。

    GitHub Enterprise インスタンスがピアリングされたネットワーク上にある場合、ホスト接続プロセスが完了するまでに数分かかることがあります。

  11. リポジトリを Cloud Build に接続するには、[リポジトリを接続] をクリックします。それ以外の場合は [完了] をクリックします。

  12. ホストを接続すると、ポップアップ ボックスが表示され、GitHub Enterprise アプリの名前を入力するように求められます。アプリの名前を入力する前に、ログインを求められる場合があります。ブラウザに Google Chrome を使用している場合、GitHub Enterprise アプリに関する情報を手動で入力するよう求めるポップアップ ページが表示される場合があります。

  13. ログイン後、GitHub アプリの名前を入力します。

  14. [GitHub アプリを作成] をクリックします。

    これで、GitHub Enterprise インスタンスで GitHub アプリが作成されました。Cloud Build が Secret Manager に認証情報を自動的に保存して、ホストを Cloud プロジェクトに接続します。API では、この接続は GitHubEnterpriseConfig リソース、または Cloud Build と GitHub Enterprise Server 間の関連付けとして表されます。

    これで、ホストが正常に接続されました。リポジトリを Cloud Build に接続する場合は、[リポジトリを接続] をクリックします。

GitHub Enterprise リポジトリの接続

このセクションでは、前のセクションで作成した GitHub アプリに Cloud プロジェクトをマッピングする方法について説明します。

コンソール

  1. Google Cloud Console で [トリガー] ページを開きます。

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

  2. [リポジトリを接続] をクリックします。

  3. [ソースの選択] で、[GitHub Enterprise] をクリックします。

  4. プルダウン メニューから [ホスト接続](GitHub Enterprise Config)を選択します。

  5. [続行] をクリックします。

  6. アプリケーションを承認します。

  7. [リポジトリを選択] で、プルダウン メニューから [GitHub アカウント] と [リポジトリ] を選択します。

API

適切な GitHub ユーザー アカウントまたは組織に GitHub アプリをインストールして、Cloud Build プロジェクトに接続するには:

  1. 前のセクションで作成した GitHub アプリに関連付けられた URL に移動します。

       https://host-url/organizations/org-name/settings/apps/app-name/
    

    ここで

    • host-url は、GitHub Enterprise インスタンスのホスト URL です。
    • org-name は、プロジェクトを作成した組織の名前です。
    • app-name は、GitHub アプリの名前です。
  2. URL を使用して、ユーザー アカウントや組織にアプリをインストールします。

    アプリをインストールしたら、アプリに関連付けられているインストール ID をメモします。インストール ID は、アプリのインストール後に URL で確認できます。

  3. JSON ファイルを作成し、次の内容を追加します。

    {
     "Id": installation-id,
     "project_id": "project-id",
     "repository_setting_list": {
            "repository_settings": {
            "owner": "owner",
            "name": "repo-name",
          },
          "repository_settings": {
            "owner": "owner",
            "name": "repo-name-additional"
          },
         …
     },
        "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
    }
    

    ここで

    • installation-idは GitHub アプリのインストール ID です。 注: この値は整数で、引用符は必要ありません。
    • project-id は、インストールに関連付けられた Cloud プロジェクトです。
    • owner は GitHub リポジトリのオーナーです。
    • repo-name は GitHub リポジトリの名前です。
    • [省略可] repo-name-additional は、追加の GitHub リポジトリの名前です。
    • project-number は Cloud プロジェクトの番号です。
    • id は GitHubEnterpriseConfig の ID です。
  4. ターミナルで次の curl コマンドを入力します。ここで、project-id は Cloud プロジェクト ID です。

     curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/installations -d @installation.json
    

これで、インストールに関連付けられたリポジトリが [非アクティブ] タブの [トリガー] ページに表示されるようになりました。

GitHub Enterprise インストール用の GitHub トリガーを作成する

このセクションでは、トリガーを作成して、GitHub Enterprise インストールにそのトリガーをリンクする方法について説明します。オンプレミス環境で GitHub Enterprise トリガーを使用する場合は、GitHub Enterprise からオンプレミス環境でリポジトリをビルドをご覧ください。

Console

GitHub トリガーを使用してトリガーを作成する方法については、GitHub トリガーの作成をご覧ください。

API

次の JSON テンプレートは、コマンドラインからトリガーを作成する方法を示しています。

  {
      "filename": "cloudbuild.yaml",
      "name": "curl-trigger",
      "description": "curl trigger",
      "github": {
          "push": {
              "branch": ".*",
          },
          "owner": "owner",
          "name": "repo-name",
      "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
      }
  }

ここで

  • owner は GitHub リポジトリのオーナーです。
  • repo-name は GitHub リポジトリの名前です。
  • project-number は Cloud プロジェクトの番号です。
  • id は GitHubEnterpriseConfig の ID です。

ターミナルで次の curl コマンドを入力します。ここで、project-id は Cloud プロジェクト ID です。

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/project-id/triggers -d @trigger.json

これで、トリガーが作成されました。

GitHub Enterprise からオンプレミス環境でリポジトリをビルド

このセクションでは、GitHub Enterprise トリガーを使用して、GitHub Enterprise インスタンス上のプライベート プールでビルドする方法について説明します。

オンプレミス環境でビルドするための GitHub Enterprise トリガーを作成するには:

  1. オンプレミス ホスト用の限定公開の Google アクセスを有効にして、GitHub Enterprise インスタンスが Google Cloud の API とサービスにアクセスできることを確認します。

  2. オンプレミス ネットワークを Google Cloud にピアリングし、Virtual Private Cloud(VPC)ネットワークをセットアップします。詳細については、VPC ネットワークのピアリングをご覧ください。

  3. GitHub Enterprise インスタンスでホストされているリポジトリをビルドするために、GitHub Enterprise トリガーを作成します。

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

次のステップ