【PCDE】WEB問題集:CI/CDパイプライン編

WEB問題集

PCDE#1(cicd)

あるチームは GitHub にホストされた Node.js アプリケーションを Cloud Build でビルドしています。main ブランチへの push を検知して自動的にビルドが走るようにしたいです。最も適切な方法はどれですか。

ディスカッション 0

正解:C

正解の根拠

Cloud Build トリガーは、リポジトリのイベント (Push、Pull Request 等) を購読してビルドを自動起動する標準機能です。GitHub アプリ連携を行えば main ブランチへの push を直接検知できます。

項目内容
トリガー種別Push to a branch
対象ブランチ正規表現 ^main$
連携GitHub App (Cloud Build GitHub App)

不正解の理由

  • B は無駄なビルドが大量に走り非効率です。
  • C は通常のイベント連携を経由せず保守性が低下します。
  • D は CSR ミラーが必須となり構成が冗長です。

参考:Build repositories from GitHub

PCDE#2(cicd)

cloudbuild.yaml に複数の独立した単体テストステップがあり、ビルド時間を短縮したいです。最も効果的な手法はどれですか。

ディスカッション 0

正解:C

正解の根拠

Cloud Build はデフォルトでステップを順次実行しますが、waitFor フィールドに ['-'] を指定すると、そのステップは他ステップの完了を待たずに開始でき、独立したテストを並列化して時間短縮できます。

記法意味
waitFor: ['-']ビルド開始時点で即実行 (依存なし)
waitFor: ['stepA']stepA 完了まで待機
未指定直前のステップ完了を待つ

不正解の理由

  • B は失敗時の切り分けが困難になり、並列化もできません。
  • C はマシン性能を下げるためむしろ遅くなります。
  • D はビルド失敗を招くだけで高速化ではありません。

参考:Configure build step order

PCDE#3(cicd)

Artifact Registry に Docker イメージを保管しています。プロジェクト内の特定リージョンにリポジトリを作成する際、最低限指定すべき項目はどれですか。複数選択してください。

(2つ選択)

ディスカッション 0

正解:A, B

正解の根拠

Artifact Registry のリポジトリ作成では、形式 (docker、maven、npm 等) とロケーション (asia-northeast1、us 等) が必須項目です。VPC やサービスアカウント鍵は作成自体には不要です。

必須項目
formatdocker, maven, npm, python, apt, yum
locationasia-northeast1, us, europe
repository-idmy-repo

不正解の理由

  • C は IAM で認可しますが、リポジトリ作成時には不要です。
  • D は Artifact Registry はマネージド HTTPS エンドポイントで提供され、VPC 指定は不要です。

参考:Create repositories

PCDE#4(cicd)

Container Analysis の自動脆弱性スキャンを Artifact Registry の Docker リポジトリで有効化したい場合、最も適切な手順はどれですか。

ディスカッション 0

正解:B

正解の根拠

Artifact Registry に push された Docker イメージは、Container Scanning API を有効化することで自動的に脆弱性スキャンが行われ、結果は Container Analysis に保存されます。

項目内容
APIcontainerscanning.googleapis.com
トリガーイメージ push 時に自動
結果保存Container Analysis Occurrence

不正解の理由

  • B は実行時検知ツールであり、レジストリ脆弱性スキャンの代替にはなりません。
  • C は OS の選択であり、レジストリスキャンとは無関係です。
  • D の On-Demand Scanning はローカル/CI 用途で、自動スキャンの代替ではありません。

参考:Enable container scanning

PCDE#5(cicd)

Cloud Deploy の Delivery Pipeline で、dev → staging → prod の順序でリリースを進めるためにマニフェストに記述する要素はどれですか。

ディスカッション 0

正解:C

正解の根拠

Cloud Deploy の DeliveryPipeline リソースでは、serialPipeline.stages に Target を上から順に列挙することで、リリースの進行順序を定義します。各 Stage で promote を実行すると次の Target に展開されます。

フィールド役割
serialPipeline.stages[].targetIdTarget 名 (順序付き)
profilesskaffold プロファイル
strategystandard / canary

不正解の理由

  • B は戦略の指定であり順序とは無関係です。
  • C のような自動推定は存在しません。
  • D は Cloud Build の機能で Cloud Deploy には適用されません。

参考:Deploy an application to GKE