GitHub でのビルドの実行

Cloud Build では、Cloud Build GitHub アプリが利用できます。このアプリでは、新しい commit を GitHub に push するごとにコードを自動的にビルドできます。

このチュートリアルでは、アプリのインストールと構成方法、GitHub でビルドを自動でトリガーする方法について説明します。

目標

このチュートリアルの内容は次のとおりです。

  • ビルドするソースコードを格納する GitHub リポジトリを準備する。
  • Google Cloud Build GitHub アプリをインストールして構成する。
  • GitHub でソースコードを変更し、変更の pull リクエストを作成する。
  • Google Cloud Build アプリがコードをビルドし、結果を pull リクエストにパブリッシュすることを確認する。
  • GitHub と Cloud Console でビルド結果を表示する。
  • ビルドを構成するさまざまな方法について学習する。

費用

このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。

  • Cloud Build

    1 日 120 分までビルドは無料です。このしきい値を超えて使用されたビルドに対して料金が請求されます。詳しくは、料金のページをご覧ください。

  • Container Registry

    Dockerfile を使用してビルドし、そのビルドされたイメージを Container Registry に保存する場合、Docker イメージによって使用されるストレージと下りネットワークに対して料金が請求されます。詳しくは、Container Registry の料金ページをご覧ください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. GitHub アカウントがまだない場合は作成してください。
  5. ターゲットの Cloud プロジェクトで Cloud Build API を有効にします。

    Cloud Build API を有効にする

ソースファイルを格納する GitHub リポジトリを準備する

Google Cloud Build アプリを使用するには、リポジトリに Dockerfile または cloudbuild.yaml ファイルを含めてビルドを構成する必要があります。 Dockerfile または cloudbuild.yaml ファイルは、リポジトリのルートまたはリポジトリのサブディレクトリに置くことができます。

Dockerfile は、Docker コンテナをビルドするための構成ファイルです。アプリを Docker ビルド用に使用している場合、リポジトリに Dockerfile が含まれていれば十分です。このチュートリアルの例では、Dockerfile を使用しています。

cloudbuild.yaml は、Cloud Build の構成ファイルです。次のようなシナリオでは、cloudbuild.yaml を使用します。

  • Docker ビルドを微調整する場合は、Dockerfile に加えて cloudbuild.yaml を入力できます。リポジトリに Dockerfilecloudbuild.yaml が含まれる場合、Google Cloud Build アプリは cloudbuild.yaml を使用してビルドを構成します。

  • Docker 以外のビルド用に Google Cloud Build アプリを使用する場合。

cloudbuild.yaml の作成方法については、ビルド構成の概要基本的なビルド構成ファイルの作成をご覧ください。

サンプル リポジトリの fork

このチュートリアルの例を実際に試すには、ビルドするソースコードを格納する GitHub リポジトリが必要です。この目的のためのサンプル リポジトリを用意していますが、続行する前に fork する必要があります。

サンプル リポジトリを fork する手順は次の通りです。リポジトリ内のソースファイルには、helloworld.sh ファイルと Dockerfile ファイルが含まれます。これらは、Docker イメージのビルド時に使用されます。

  1. GitHub で /GoogleCloudBuild/gcbapp-dockerfile-example に移動します。

  2. ページの右上隅にある [Fork] をクリックします。

    [fork] ボタンのスクリーンショット

    これで、ソースファイルを格納する gcbapp-dockerfile-example リポジトリのコピーが作成されます。

Google Cloud Build アプリのインストール

このセクションでは、Google Cloud Build アプリをインストールします。これにより、GitHub リポジトリを Cloud プロジェクトに接続し、gcbapp-dockerfile-example の継続的インテグレーションを設定できます。

インストールと設定のプロセスでは、最初に Google Cloud Build アプリが Google Cloud Platform に接続するのを承認するよう求められます。承認後、Cloud Console にリダイレクトされます。ここで Cloud プロジェクトを選択します。その後、GitHub に再びリダイレクトされます。

次のアプリのインストール手順は、gcbapp-dockerfile-example リポジトリ専用です。アプリのインストールでは、その他のリポジトリやすべてのリポジトリを選択することもできます。

  1. まだ行っていない場合は、ターゲットの Cloud プロジェクトで Cloud Build API を有効にします

  2. Google Cloud Build アプリの [GitHub Marketplace] ページに移動します。

    Cloud Build アプリページを開く

  3. 下にスクロールし、ページ下部にある [Setup with Google Cloud Build] をクリックします。

  4. プロンプトが表示されたら、GitHub にログインします。

  5. [Edit your plan] ページで、お支払い情報を選択または更新して、[grant this app access] をクリックします。GitHub Cloud Build アプリをすでに購入済みで再インストールする場合には、この手順を省略します。

  6. ビジネスニーズに応じて、次のいずれかの項目を選択します。

    • All repositories - Cloud Build アプリを介して、現在と将来のすべての GitHub リポジトリにアクセスできます。

    • Only select repositories - Select repositories のプルダウンを使用して、Cloud Build アプリを使用して特定のリポジトリにのみアクセスできるようにします。後で追加のリポジトリを有効にすることも可能です。

  7. [許可する] をクリックします。

  8. Google Cloud にログインします。

    承認ページが表示されます。ここで、Google Cloud Build アプリが Google Cloud Platform に接続するのを承認するよう求められます。

    [authorize] ボタンのスクリーンショット

  9. [Authorize Google Cloud Build by GoogleCloudBuild] をクリックします。

    Cloud Console にリダイレクトされます。

  10. Cloud プロジェクトを選択します。

  11. 同意のチェックボックスをオンにして、[次へ] をクリックします。

  12. [リポジトリを選択] ページが表示されたら、次のように GitHub リポジトリを Cloud プロジェクトに接続します。

    a. 正しい GitHub アカウントが選択されていることを確認します。

    b. 各ターゲット リポジトリの横にあるチェックボックスをオンにします。

    c. 免責条項を読み、提示された条件に同意することを示すチェックボックスをオンにします。

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

    ターゲット リポジトリが 1 つ以上表示されない場合は、[GitHub のリポジトリを編集] をクリックして上記の手順を繰り返し、Cloud Build アプリで追加のリポジトリを有効にします。

  13. ブランチ push 時のビルドをトリガーするデフォルトのトリガーを 1 つ以上作成する場合、これらのトリガーに表示される [push トリガーの作成] ページを使用します。各ターゲット リポジトリの横にあるボックスを選択し、[push トリガーの作成] をクリックします。それ以外の場合は、この手順をスキップします。

これで、Google Cloud Build アプリが正常にインストールされ、選択したリポジトリが Cloud プロジェクトに接続されました。さらに、ビルドを開始する push トリガーが作成されました。

追加のリポジトリの接続

追加のリポジトリを Cloud プロジェクトに接続する手順は次のとおりです。

  1. [Cloud Build GitHub アプリのインストールの管理] ページに移動します。

  2. GitHub アカウントを選択し、[続行] をクリックします。

  3. [別のプロジェクトを追加] をクリックします。

  4. [プロジェクトの設定] でプロジェクトを選択するか、新しいプロジェクトを作成します。

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

  6. [リポジトリの選択] で、プロジェクトに接続するリポジトリをすべて選択します。

  7. 必要に応じて、[トリガー設定] で push トリガーを作成するすべてのリポジトリを選択します。

  8. トリガーを作成するには、[push トリガーを作成] をクリックします。それ以外の場合は、[今回はスキップ] をクリックして、接続済みのリポジトリのリストに戻ります。

  9. [完了] をクリックします。

認証された GitHub アカウントを更新する

Google アカウントに関連付けられている GitHub アカウントを更新する必要がある場合は、GitHub で認証するのページに移動してください。これは、メインの GitHub アカウントから別のアカウントで最初の接続リポジトリ フローを通過する際に必要になることがあります。Cloud Build Connect のリポジトリ ページに、GitHub への Cloud Build アプリのインストール後に GitHub アプリがリポジトリにインストールされていないことが示されている場合は、これが必要になります。

Google Cloud Build アプリを使用してビルドを行う

gcbapp-dockerfile-example のソースファイルはシンプルな helloworld.sh ファイルと Dockerfile で構成されています。このセクションでは、helloworld.sh のコードを変更し、pull リクエストを作成してその変更を確認します。

Google Cloud Build アプリは、リポジトリに新しい commit を push するとコードをビルドします。pull リクエスト内の push された commit のビルドは、pull リクエスト UI に含まれます。

  1. gcbapp-dockerfile-example で [helloworld.sh] を開きます。

    https://github.com/[GITHUB_USERNAME]/gcbapp-dockerfile-example/blob/master/helloworld.sh
    
  2. 鉛筆アイコンをクリックしてファイルを編集します。

    [edit file] ボタンのスクリーンショット

  3. 次の行をファイルの末尾に追加します。

    echo "The time is $(date)."
    
  4. [Create a new branch for this commit and start a pull request.] を選択し、[Propose file change] をクリックします。

  5. [Create pull request] をクリックします。

    これにより、Cloud Build が起動し、コードがビルドされます。

  6. [Checks] タブに移動します。

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

    Cloud Build が変更をビルドしたことと、そのビルドが成功したことがわかります。また、コードのビルドにかかった時間やビルド ID など、ビルドに関するその他の詳細も表示されます。

  7. [View more details on Google Cloud Build] をクリックします。

    Cloud Console の [ビルドの詳細] ページが開き、ステータス、ログ、ビルドステップなどのビルド情報が表示されます。

  8. ブラウザで [GitHub] タブに移動し、[Conversation] タブに移動します。

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

  9. [Merge pull request]、[Confirm merge] の順にクリックします。

    これで作業は完了です。コード変更が正しくビルドされ、変更がチェックインされていることを確認しました。

その他の例

以下に、構成ファイルとして cloudbuild.yaml を使用するコード例を格納するサンプル リポジトリを示します。リポジトリを fork し、このチュートリアルで説明した手順を使用してコードをビルドできます。

クリーンアップ

Cloud Build チュートリアルが終了したら、Google Cloud で作成したリソースをクリーンアップして、割り当てを消費せず今後料金が発生しないようにします。次のセクションで、リソースを削除または無効にする方法を説明します。

リポジトリと Google Cloud Build アプリ間の接続を解除する

Cloud Build アプリを使用してビルドのトリガーを停止するには、次の手順でリポジトリとアプリの接続を解除します。

  1. GitHub プロフィールの設定ページに移動します。

    GitHub プロフィール ページを開く

  2. GitHub アカウントにログインします。

  3. [Personal settings] で [Applications] をクリックします。

  4. Google Cloud Build を含む行を探し、[Configure] をクリックします。

  5. [Repository access] で [YOUR_GITHUB_USERNAME]/gcbapp-dockerfile-example を探して、[X] をクリックします。

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

    Google Cloud にリダイレクトされます。

  7. Google Cloud へのログイン

  8. Cloud Build ページで、Cloud プロジェクトと gcb-dockerfile-example の接続を探して、[リンク解除] をクリックします。

これで、gcb-dockerfile-example と Google Cloud Build アプリ間の接続が解除されました。Cloud Build は、gcb-dockerfile-example のコードのビルドをトリガーしません。

Google Cloud Build アプリをアンインストールする

  1. Google Cloud Build の GitHub アプリページに移動します。

    Cloud Build アプリページを開く

  2. [構成] をクリックします。

  3. アプリをインストールしたユーザー名または組織を選択します。

  4. [アンインストール] をクリックします。

GitHub リポジトリを削除する

  1. GitHub で、リポジトリのメインページに移動します。

    https://github.com/[GITHUB_USERNAME]/gcbapp-dockerfile-example
    
  2. リポジトリ名の下にある [Settings] をクリックします。

  3. [Danger Zone] で、[Delete this repository] をクリックします。

  4. リポジトリの名前を入力して確認し、[I understand the consequences, delete this repository] をクリックします。

コンテナ イメージを削除する

  1. Google Cloud Console で Container Registry ページを開きます。

    Container Registry ページを開く

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

  3. gcbapp-dockerfile-example を開きます。

  4. すべてのイメージを選択して、[削除] をクリックします。

このチュートリアルで作成したイメージがプロジェクトから削除されます。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ