Cloud Build トリガーを使用すると、ビルドを自動的に開始し、Git リポジトリからワークフローをデプロイできます。ソース リポジトリが変更された場合や、特定の条件に一致する変更があった場合にのみワークフローをデプロイするようにトリガーを構成できます。
このアプローチは、デプロイ ライフサイクルを管理する際に活用できます。たとえば、ステージング環境でワークフローの変更をデプロイし、その環境に対してテストを実行して、これらの変更を本番環境に段階的にロールアウトできます。
始める前に
この手順では、トリガーを作成できるように、Google Cloud プロジェクトで Cloud Build 編集者のロール(roles/cloudbuild.builds.editor
)を付与されていることを前提としています。また、GitHub や Bitbucket などのソース リポジトリにワークフローが必要です。
コンソール
Cloud Build API と Workflows API を有効にします。
Workflows 管理者のロール(
roles/workflows.admin
)を Cloud Build サービス アカウントに付与します。Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
Cloud Build サービス アカウント(
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)の行で、 [プリンシパルを編集] をクリックします。[
別のロールを追加] をクリックします。[ロール] リストで、[Workflows 管理者] ロールを選択します。
[保存] をクリックします。
Compute Engine のデフォルト サービス アカウントのサービス アカウント ユーザー ロール(
roles/iam.serviceAccountUser
)を Cloud Build サービス アカウントに付与します。Compute Engine API を有効にした場合、Compute Engine のデフォルトのサービス アカウントはPROJECT_NUMBER-compute@developer.gserviceaccount.com
になります。Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
Compute Engine のデフォルトのサービス アカウント(
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)のメールアドレスをクリックします。[権限] タブをクリックします。
[アクセスを許可] ボタンをクリックします。
新しいプリンシパルを追加するには、サービス アカウントのメールアドレス(
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
)を入力します。[ロールを選択] リストで、[サービス アカウント] > [サービス アカウント ユーザー] ロールを選択します。
[保存] をクリックします。
gcloud
Cloud Build API と Workflows API を有効にします。
gcloud services enable cloudbuild.googleapis.com \ workflows.googleapis.com
Workflows 管理者のロール(
roles/workflows.admin
)を Cloud Build サービス アカウントに付与します。PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)') gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/workflows.admin
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。Compute Engine のデフォルト サービス アカウントのサービス アカウント ユーザー ロール(
roles/iam.serviceAccountUser
)を Cloud Build サービス アカウントに付与します。Compute Engine API を有効にした場合、Compute Engine のデフォルトのサービス アカウントはPROJECT_NUMBER-compute@developer.gserviceaccount.com
になります。gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
ソース リポジトリに接続する
リポジトリで発生したイベントに応じて Cloud Build がビルドを自動化できるようにするには、Cloud Build をソース リポジトリに接続する必要があります。
GitHub または Bitbucket に接続するには、次の手順を実行します。
Google Cloud コンソールで、[Cloud Build トリガー] ページに移動します。
必要に応じて、プロジェクトを選択し、[開く] をクリックします。
[リージョン] リストから、トリガーを作成するリージョンを選択します。
[リポジトリを接続] をクリックします。
ソースコードを保存したソース リポジトリを選択します。
例: GitHub(Cloud Build GitHub アプリ)
[続行] をクリックします。
ユーザー名とパスワードを使用して、ソース リポジトリに対する認証を行います。
GitHub にログインする場合は、続行するために Google Cloud Build GitHub アプリが GitHub アカウントにアクセスすることを承認するよう求められます。
使用可能なリポジトリのリストから目的のリポジトリを選択し、[OK] をクリックします。
GitHub や Bitbucket などの外部リポジトリを使用するには、作業中の Google Cloud プロジェクトでオーナーレベルの権限が必要になります。
同意の免責条項を読み、横にあるチェックボックスをオンにして、利用規約に同意することを表明します。
[接続] をクリックします。
リポジトリのソースコードのビルドを自動化するビルドトリガーの作成を続行するには、[トリガーを作成する] をクリックします。それ以外の場合は [完了] をクリックします。
Cloud Build 構成ファイルを作成する
ビルド構成ファイルでは、ビルドトリガーを使用してビルドを開始するときに必要なフィールドを定義します。プロジェクトのルート ディレクトリに構成ファイルを作成し、YAML または JSON を使用して記述します。
たとえば、次の構成ファイルは、テスト ワークフローをデプロイして実行し、スクリプトを使用して出力を確認します。テストに合格すると、ワークフローがデプロイされます。
Git リポジトリからビルドがトリガーされると、Cloud Build によって、$BRANCH_NAME
と $SHORT_SHA
の置換変数が設定されます。置換変数は、ブランチ名、およびビルドに関連付けられた commit ID の最初の 7 文字を表します。
$_WORKFLOW_NAME
置換変数を使用すると、さまざまな変数値を使用して構成ファイルを再利用できます。この値は、ビルドトリガーを作成するときに指定できます。
詳細については、ビルド構成ファイルを作成するをご覧ください。
ビルドトリガーを作成する
Cloud Build トリガーを作成すると、ワークフローのデプロイを自動化できます。
前のセクションの構成ファイルのビルドトリガーを作成するには:
Google Cloud コンソールで、[Cloud Build トリガー] ページに移動します。
[トリガーを作成] をクリックします。
[名前] 欄にトリガーの名前を入力します。
[イベント] で、トリガーを呼び出すイベントを選択します。
例: ブランチに push する
[ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。正規表現を使用して、ブランチまたはタグとの一致を指定できます。
例:
GoogleCloudPlatform/workflows-demos
(リポジトリ)と^main$|^staging$
(main
ブランチとstaging
ブランチと一致)[含まれるファイルと無視されるファイル フィルタを表示] セクションを展開し、含まれるファイルとしてワークフローを指定すれば、ワークフローが変更されたときにビルドが呼び出されます。
例:
gitops/workflow.yaml
[構成] で、タイプとして [Cloud Build 構成ファイル(YAML または JSON)] を選択し、ロケーションとして [リポジトリ] を選択します。
[Cloud Build 構成ファイルの場所] フィールドに、ファイルの場所を指定します。
例:
gitops/cloudbuild.yaml
必要に応じて、置換変数を追加するには、[変数を追加] をクリックして、キーと値の組み合わせを指定します。
例:
_WORKFLOW_NAME
(変数)、workflows-gitops
(値)ビルドトリガーを保存するには、[作成] をクリックします。
Git リポジトリの指定されたブランチ内のワークフローに変更が push されると、ワークフローをデプロイするために Cloud Build が自動的にトリガーされます。
詳細については、ビルドトリガーの作成と管理をご覧ください。
ビルドトリガーをテストする
前のセクションのビルドトリガーと構成ファイルをテストできます。
Git リポジトリの
staging
ブランチでworkflow.yaml
を編集し、Hello World
をBye World
に変更します。staging
ブランチへの変更を commit し、push します。git add workflow.yaml git commit -m "Update workflow.yaml in staging" git push
Cloud Build トリガーが実行され、ビルドが開始されます。
ビルドが成功したことを確認するには、Google Cloud コンソールで [ビルド履歴] ページに移動します。
ビルドの完了後、Cloud Build はビルド全体と個々のビルドステップの全体的なステータスを表示します。詳細については、ビルド結果を表示するをご覧ください。
ステージング ワークフローがデプロイされていることを確認するには、Google Cloud コンソールで [ワークフロー] ページに移動します。
workflows-gitops-staging
という名前のワークフローが表示されます。ステージング ワークフローを本番環境にデプロイするには、
staging
ブランチをmain
ブランチにマージします。git checkout main git merge staging git push
test-main.sh
はワークフローの出力でHello World
を想定しているため、ビルドは失敗します。本番環境ワークフローを正常にデプロイするには、
staging
ブランチでworkflow.yaml
を再度編集し、文字列をHello World
に戻します。staging
ブランチに変更を commit して push し、staging
ブランチをmain
ブランチにマージします。本番環境ワークフローがデプロイされていることを確認するには、Google Cloud コンソールで [ワークフロー] ページに移動します。
workflows-gitops-main
という名前のワークフローが表示されます。
次のステップ
- Cloud Build の詳細を確認する
- ビルドエラーをトラブルシューティングする方法について学習する。
- ワークフローのトラブルシューティングの方法を学習する。