Cloud Build を使用したビルドの自動化

このトピックでは、Cloud Build と Cloud Source Repositories を使用してビルドを自動化する方法を説明します。

ユーザーが Cloud Source Repositories に格納されているファイルに変更を push するたびに新しいイメージを自動的にビルドするよう Cloud Build を構成できます。自動ビルドを開始するイベントは、ビルドトリガーと呼ばれます。これらのトリガーは、コンテナ イメージを最新の状態に維持するために役立ちます。また、それらを使用して機能ブランチをビルドしてテストすることもできます。

ビルドトリガーは、Dockerfile またはビルド構成ファイルに基づいてビルドを実行できます。

Dockerfile の使用

ビルド構成に Dockerfile を使用するには、Dockerfile ディレクトリを指定し、結果的生じるイメージの名前を指定する必要があります。Dockerfile の作成の詳細については、Docker のドキュメントをご覧ください。

Dockerfile とイメージ名を入力すると、ビルドで実行される docker build コマンドのプレビューと、トリガー構成の概要が表示されます。

ビルド構成ファイルの使用

ビルド構成にビルド構成ファイルを使用するには、ビルド構成ファイルの場所を指定する必要があります。

ロケーションを設定すると、トリガーの概要が表示されます。

始める前に

詳細情報

  • ビルドトリガーは、リポジトリのシャロー クローンを使用します。シャロー クローンでは、自動ビルドをトリガーした単一の commit だけがワークスペースにチェックアウトされます。詳細とさらに多くのリポジトリ履歴を含める方法については、クローンのシャロー解除をご覧ください。

  • GitHub や Bitbucket などの別のホストされた Git プロバイダを使用していて、リポジトリを Cloud Source Repositories にミラーリングする必要がある場合は、作業している Google Cloud プロジェクトの cloudbuilds.builds.create 権限を持っている必要があります。通常、この権限は cloudbuild.builds.editor の役割を介して付与されます。

    初めて外部リポジトリでビルドトリガーを設定する場合は、そのリポジトリで承認を設定する必要があります。詳細については、リポジトリをリモートとして追加するをご覧ください。

    外部リポジトリを設定すると、Cloud Source Repositories でリポジトリのミラーが作成されます。

  • Cloud Build の割り当てと制限の詳細については、Cloud Build ドキュメントの割り当てと上限をご覧ください。

ビルドトリガーを作成する

Console

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

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

  2. ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。

  3. [開く] をクリックします。

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

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

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

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

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

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

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

    • ソース: リポジトリと、イベントの監視対象となるブランチまたはタグを選択します。

      • リポジトリ: 使用可能なリポジトリのリストから目的のリポジトリを選択します。新しいリポジトリに接続するには、ソース リポジトリへの接続をご覧ください。

      ビルドが実行されると、Cloud Build で使用されるデフォルトの作業ディレクトリである /workspace にリポジトリのコンテンツがコピーされます。作業ディレクトリについて詳しくは、ビルド構成の概要ページをご覧ください。

      • ブランチまたはタグ: ブランチまたはタグの値にマッチングさせる正規表現を指定します。タグではスラッシュ(/)を使用できません。有効な正規表現の構文については、RE2 構文をご覧ください。
    • 構成: ビルドに使用するリモート リポジトリにあるビルド構成ファイルを選択するか、インライン ビルド構成ファイルを作成します。

      • タイプ: ビルドに使用する構成のタイプを選択します。
        • Cloud Build 構成ファイル(yaml または json): 構成にビルド構成ファイルを使用します。
        • Dockerfile: 構成には Dockerfile を使用します。
        • Buildpacks: 構成には Buildpacks を使用します。
      • 場所: 構成の場所を指定します。

        • リポジトリ: 構成ファイルがリモート リポジトリにある場合は、ビルド構成ファイルDockerfile ディレクトリの場所、または Bullpack のディレクトリを指定します。ビルド構成タイプが Dockerfile または buildpack の場合、ビルドするイメージの名前と、必要に応じてビルドのタイムアウトを指定する必要があります。Dockerfile または buildpack イメージ名を指定すると、ビルドが実行される docker build または pack コマンドのプレビューが表示されます。
        • buildpack の環境変数(省略可): 構成タイプとして buildpacks を選択した場合、[パック環境変数を追加] をクリックして buildpack 環境変数と値を指定します。buildpack 環境変数の詳細については、環境変数をご覧ください。
        • インライン: 構成オプションとして Cloud Build 構成ファイル(yaml または json)を選択した場合、インライン ビルド構成を指定できます。Google Cloud Console で [エディタを開く] をクリックして、YAML または JSON 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。

    • サービス アカウント: トリガーを呼び出すときに使用するサービス アカウントを選択します。サービス アカウントを選択しない場合は、デフォルトの Cloud Build サービス アカウントが使用されます。

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

gcloud

次のコマンドを実行します。

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

ここで

  • REPO_NAME はリポジトリの名前です。
  • BRANCH_PATTERN は、ビルドを呼び出すリポジトリ内のブランチ名です。
  • TAG_PATTERN は、ビルドを呼び出すリポジトリ内のタグ名です。
  • BUILD_CONFIG_FILE はビルド構成ファイルのパスです。
  • SERVICE_ACCOUNTプレビュー)は、サービス アカウントに関連付けられたメールです。このフラグを含めない場合、デフォルトの Cloud Build サービス アカウントが使用されます。
  • (省略可)--require-approval は、承認を必要とするようにトリガーを構成するのに含めるフラグです。

フラグの一覧については、gcloud リファレンスで Cloud Source Repositories のトリガーを作成する方法をご覧ください。

Cloud Source Repositories を使用して gcloud コマンドを実行してトリガーを作成すると、次のような出力が表示されます。

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

ビルドトリガーを表示する

Google Cloud コンソールでトリガーを表示するには、Cloud Build の [トリガー] ページを開きます。

Cloud Source Repositories 内の特定のプロジェクトのトリガーを表示するには、右上の [設定] をクリックし、[Cloud Build トリガー] をクリックします。

ビルドトリガーをスキップする

たとえば、ドキュメントや構成ファイルを更新する場合など、ソースコードを変更するだけで、ビルドをトリガーしたくない場合があります。

このようなケースでは、commit メッセージに [skip ci] または [ci skip] を追加すると、ビルドのトリガーをスキップできます。

例:

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

後でその commit でビルドを実行する場合は、[トリガーを実行] ボタンを使用します。

クローンのシャロー解除

Git リポジトリでソースをビルドするときに、Cloud Source Repositories はリポジトリのシャロー クローンを実行します。Cloud Source Repositories は、シャロー クローンを実行すると、ビルドをトリガーした単一の commit のみをワークスペースからチェックアウトし、そのソースからビルドします。Cloud Source Repositories では他のブランチや履歴がチェックアウトされません。これは効率を高めるために行われます。ビルドで単一の commit をビルドするために Cloud Source Repositories がリポジトリ全体と履歴をフェッチするときに、遅延は発生しません。

リポジトリの履歴を追加してビルドに含める場合は、ビルド構成ファイルにビルドステップを追加して、クローンのシャローを解除できます。例:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

git fetch について詳しくは、git のリファレンスをご覧ください。ビルド構成ファイルの作成方法については、ビルド構成の概要をご覧ください。

次のステップ