main への push など、構成の変更を Git リポジトリに push するたびに実行される自動 Image Builder パイプラインを構成できます。リポジトリ イベントでビルドを自動化すると、コードレビューまたはマージ時に、Cloud Build がカスタム OS イメージを直ちに検証、ビルド、Compute Engine と Artifact Registry に公開します。
始める前に
- 環境を準備するで環境の設定手順を完了します。
- Terraform を使用してパイプラインをデプロイする場合や、リポジトリからビルドを自動化する場合は、Cloud Build リポジトリ(
2nd gen)または Developer Connect 接続リンクを使用して、GitHub、GitLab、Bitbucket リポジトリを接続します。 - リポジトリに
cloudbuild.yamlオーケストレーション ファイル、imagebuilder.yamlレシピ ファイル、参照されているビルド スクリプトが含まれていることを確認します。 - Terraform を使用する場合は、Terraform CLI バージョン 1.3 以降をインストールします。
-
まだ設定していない場合は、認証を設定します。認証では、 Cloud de Confiance by S3NS サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
gcloud
-
Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。ログイン後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
-
- デフォルトのリージョンとゾーンを設定します。
-
Google Cloud CLI をインストールします。
-
フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。
詳細については、連携 ID を使用して gcloud CLI にログインするをご覧ください。
-
ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
認証エラーが返され、外部 ID プロバイダ(IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については、 ローカル開発環境の認証を設定するをご覧ください。
必要なロール
リポジトリ イベント トリガーの作成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Build 編集者 (
roles/cloudbuild.builds.editor) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
リポジトリの自動化を構成する
リポジトリ イベント トリガーは、gcloud CLI または Terraform を使用して構成できます。次のいずれかのタブを選択して、リポジトリ トリガーを構成します。
gcloud
gcloud builds
triggers create コマンドを使用して、接続された第 2 世代リポジトリ リンク(--repository)を直接指定することで、自動リポジトリ トリガーを作成できます。
gcloud builds triggers create repository \
--name="TRIGGER_NAME" \
--repository="projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" \
--branch-pattern="^main$" \
--build-config="CLOUDBUILD_YAML_PATH" \
--service-account="projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" \
--substitutions="_GCS_WORKDIR=gs://STAGING_BUCKET/workdir/,_IMAGE_BUILDER_CONFIG_PATH=RECIPE_PATH,_SERVICE_ACCOUNT=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL,_IMAGE_OUTPUT_PATH=image-builder/binaryOut" \
--region=REGION \
--project=PROJECT_ID
次のように置き換えます。
TRIGGER_NAME: トリガーの名前(例:git-push-custom-os-builder)。PROJECT_ID: プロジェクト ID。REGION: リポジトリ接続がホストされ、イメージ カスタマイズ パイプライン ジョブが実行されるリージョン(例:us-central1)。CONNECTION_NAME: Developer Connect 接続の名前(例:github-connection)。REPO_NAME: リンクされた Git リポジトリ名。CLOUDBUILD_YAML_PATH: ローカル ディレクトリ内のcloudbuild.yamlへの相対パス。SERVICE_ACCOUNT_EMAIL: ビルド サービス アカウントの正確なメールアドレス。STAGING_BUCKET: Cloud Storage ステージングworkdirバケット名。RECIPE_PATH: リポジトリ内のimagebuilder.yamlへの相対パス。
Terraform
Terraform を使用して自動リポジトリ トリガーを構成する手順は次のとおりです。
main.tf構成ファイルにトリガー リソースを追加します。resource "google_cloudbuild_trigger" "repository_trigger" { name = "TRIGGER_NAME" location = "REGION" project = "PROJECT_ID" description = "Triggers custom OS image builds on repository push events" repository_event_config { repository = "projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" push { branch = "^main$" } } filename = "CLOUDBUILD_YAML_PATH" substitutions = { _GCS_WORKDIR = "gs://STAGING_BUCKET/workdir/" _IMAGE_BUILDER_CONFIG_PATH = "RECIPE_PATH" _SERVICE_ACCOUNT = "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" } }次のように置き換えます。
TRIGGER_NAME: トリガーの名前(例:git-push-custom-os-builder)。PROJECT_ID: プロジェクト ID。REGION: リポジトリ接続がホストされている Cloud de Confiance リージョン(例:us-central1)。CONNECTION_NAME: Developer Connect 接続の名前(例:github-connection)。REPO_NAME: リンクされた Git リポジトリ名。CLOUDBUILD_YAML_PATH: ローカル ディレクトリ内のcloudbuild.yamlへの相対パス。STAGING_BUCKET: Cloud Storage ステージング バケット名。RECIPE_PATH: リポジトリ内のimagebuilder.yamlへの相対パス。SERVICE_ACCOUNT_EMAIL: ビルド サービス アカウントのメールアドレス。
更新された Terraform 構成をデプロイします。
terraform plan terraform apply
マルチファイル Terraform インフラストラクチャ プロジェクトの完全な構造を確認するには、Terraform を使用してパイプラインを作成して管理するをご覧ください。
次のステップ
- Cloud Scheduler を使用して、セキュリティ パッチ適用用にカスタム OS イメージのビルドを定期的にスケジュール設定する方法について説明します。
- サポートされているカスタマイズ アクション(
Shell、FileCopy、UpdateKernelCommandLine、InstallGPU)をご覧ください。