WEB問題集
あるチームは GitHub にホストされた Node.js アプリケーションを Cloud Build でビルドしています。main ブランチへの push を検知して自動的にビルドが走るようにしたいです。最も適切な方法はどれですか。
正解:C
正解の根拠
Cloud Build トリガーは、リポジトリのイベント (Push、Pull Request 等) を購読してビルドを自動起動する標準機能です。GitHub アプリ連携を行えば main ブランチへの push を直接検知できます。
| 項目 | 内容 |
|---|---|
| トリガー種別 | Push to a branch |
| 対象ブランチ | 正規表現 ^main$ |
| 連携 | GitHub App (Cloud Build GitHub App) |
不正解の理由
- B は無駄なビルドが大量に走り非効率です。
- C は通常のイベント連携を経由せず保守性が低下します。
- D は CSR ミラーが必須となり構成が冗長です。
cloudbuild.yaml に複数の独立した単体テストステップがあり、ビルド時間を短縮したいです。最も効果的な手法はどれですか。
正解:C
正解の根拠
Cloud Build はデフォルトでステップを順次実行しますが、waitFor フィールドに ['-'] を指定すると、そのステップは他ステップの完了を待たずに開始でき、独立したテストを並列化して時間短縮できます。
| 記法 | 意味 |
|---|---|
| waitFor: ['-'] | ビルド開始時点で即実行 (依存なし) |
| waitFor: ['stepA'] | stepA 完了まで待機 |
| 未指定 | 直前のステップ完了を待つ |
不正解の理由
- B は失敗時の切り分けが困難になり、並列化もできません。
- C はマシン性能を下げるためむしろ遅くなります。
- D はビルド失敗を招くだけで高速化ではありません。
Artifact Registry に Docker イメージを保管しています。プロジェクト内の特定リージョンにリポジトリを作成する際、最低限指定すべき項目はどれですか。複数選択してください。
(2つ選択)
正解:A, B
正解の根拠
Artifact Registry のリポジトリ作成では、形式 (docker、maven、npm 等) とロケーション (asia-northeast1、us 等) が必須項目です。VPC やサービスアカウント鍵は作成自体には不要です。
| 必須項目 | 例 |
|---|---|
| format | docker, maven, npm, python, apt, yum |
| location | asia-northeast1, us, europe |
| repository-id | my-repo |
不正解の理由
- C は IAM で認可しますが、リポジトリ作成時には不要です。
- D は Artifact Registry はマネージド HTTPS エンドポイントで提供され、VPC 指定は不要です。
Container Analysis の自動脆弱性スキャンを Artifact Registry の Docker リポジトリで有効化したい場合、最も適切な手順はどれですか。
正解:B
正解の根拠
Artifact Registry に push された Docker イメージは、Container Scanning API を有効化することで自動的に脆弱性スキャンが行われ、結果は Container Analysis に保存されます。
| 項目 | 内容 |
|---|---|
| API | containerscanning.googleapis.com |
| トリガー | イメージ push 時に自動 |
| 結果保存 | Container Analysis Occurrence |
不正解の理由
- B は実行時検知ツールであり、レジストリ脆弱性スキャンの代替にはなりません。
- C は OS の選択であり、レジストリスキャンとは無関係です。
- D の On-Demand Scanning はローカル/CI 用途で、自動スキャンの代替ではありません。
Cloud Deploy の Delivery Pipeline で、dev → staging → prod の順序でリリースを進めるためにマニフェストに記述する要素はどれですか。
正解:C
正解の根拠
Cloud Deploy の DeliveryPipeline リソースでは、serialPipeline.stages に Target を上から順に列挙することで、リリースの進行順序を定義します。各 Stage で promote を実行すると次の Target に展開されます。
| フィールド | 役割 |
|---|---|
| serialPipeline.stages[].targetId | Target 名 (順序付き) |
| profiles | skaffold プロファイル |
| strategy | standard / canary |
不正解の理由
- B は戦略の指定であり順序とは無関係です。
- C のような自動推定は存在しません。
- D は Cloud Build の機能で Cloud Deploy には適用されません。
