QUIZ 20分

チェックポイント:テスト自動化パイプライン

ストーリー

「Step 3 のチェックだ。テスト自動化の実践知識を確認しよう」

木村先輩が言った。

「マトリクス、シークレット、キャッシュ...... これらを正しく使いこなせれば、本番レベルのCIパイプラインが組める。 次のTerraformステップに進む前に、確実に理解しておこう」


クイズの説明

  • 全6問
  • 合格ライン: 80%(5問正解)

問題

Q1. マトリクス戦略で fail-fast: false を設定した場合の挙動として正しいものはどれですか?

  • A) マトリクスの全ジョブが失敗した場合のみワークフローが失敗する
  • B) 1つのジョブが失敗しても、他のジョブは最後まで実行される
  • C) 失敗したジョブだけが自動的にリトライされる
  • D) マトリクスの最初のジョブのみが実行される
<details> <summary>解答と解説</summary>

正解: B

fail-fast: false を設定すると、マトリクス内の1つのジョブが失敗しても、残りのジョブはキャンセルされずに最後まで実行されます。デフォルト(fail-fast: true)では、1つの失敗で他のジョブも即座にキャンセルされます。全環境でのテスト結果を確認したい場合は false が有効です。

</details>

Q2. GitHub Actionsのサービスコンテナ(services)の説明として正しいものはどれですか?

  • A) ジョブの実行が完了しても永続的に動作し続ける
  • B) ジョブ内で使用するデータベースやキャッシュなどの外部サービスを提供する
  • C) 本番環境のサービスに直接接続するための仕組みである
  • D) Self-hosted Runner でのみ使用可能である
<details> <summary>解答と解説</summary>

正解: B

サービスコンテナは、ジョブの実行中に必要なデータベース(PostgreSQL, MySQL等)やキャッシュ(Redis等)などの外部サービスをDockerコンテナとして提供する仕組みです。ジョブの開始時に自動で起動し、終了時に自動で破棄されます。GitHub-hosted Runner でも利用可能です。

</details>

Q3. GitHub Secretsにおいて、Environment Secretsが Repository Secretsと異なる点はどれですか?

  • A) Environment Secretsはワークフロー外からもアクセスできる
  • B) Environment Secretsは暗号化されていない
  • C) Environment Secretsは環境ごとに異なる値を設定でき、保護ルールを適用できる
  • D) Environment SecretsはOrganizationレベルのみで設定可能
<details> <summary>解答と解説</summary>

正解: C

Environment Secretsは、staging/productionなどの環境ごとに異なる値のシークレットを設定できます。さらに、Required reviewers(承認者)やWait timer(待機時間)などの保護ルールを環境単位で適用できるため、本番デプロイの安全性を高められます。

</details>

Q4. GitHub Actionsのキャッシュ(actions/cache)に関する説明として正しいものはどれですか?

  • A) キャッシュは永続的に保持され、手動でのみ削除できる
  • B) キャッシュキーが完全一致しない場合、restore-keys でフォールバック検索できる
  • C) キャッシュはジョブ間でのみ共有され、異なるワークフロー間では共有されない
  • D) キャッシュのサイズ制限はリポジトリあたり100MBである
<details> <summary>解答と解説</summary>

正解: B

restore-keys を指定すると、メインの key が完全一致しない場合に、プレフィックスマッチでフォールバック検索を行います。例えば keynode-abc123 にマッチしない場合、restore-keys: node- を指定しておけば、node- で始まる最新のキャッシュが復元されます。キャッシュの保持期間は7日間(最終アクセスから)、サイズ制限は10GB/リポジトリです。

</details>

Q5. テストカバレッジの閾値をCI内で強制する方法として最も適切なものはどれですか?

  • A) 手動でカバレッジレポートを確認し、基準を下回ったらPRを拒否する
  • B) テストフレームワークの設定でカバレッジ閾値を設定し、基準を下回るとテストを失敗させる
  • C) カバレッジは参考値なので、閾値を設定する必要はない
  • D) デプロイ後にカバレッジを確認し、問題があればロールバックする
<details> <summary>解答と解説</summary>

正解: B

Jest等のテストフレームワークでは coverageThreshold を設定でき、カバレッジが閾値を下回ると自動的にテストを失敗させることができます。これをCIパイプラインに組み込むことで、カバレッジの低下を自動的に検出し、PRのマージを防ぐことができます。手動確認はスケーラブルではありません。

</details>

Q6. OIDC(OpenID Connect)による認証が従来のシークレット(Static Credentials)より推奨される理由として正しいものはどれですか?

  • A) OIDCの方がセットアップが簡単だから
  • B) OIDCは一時的な認証情報を使用するため、漏洩しても被害が限定的だから
  • C) OIDCは無料で、Static Credentialsは有料だから
  • D) OIDCはGitHub Actionsでのみ使用できる特別な仕組みだから
<details> <summary>解答と解説</summary>

正解: B

OIDCは一時的な認証情報(通常15分〜1時間で有効期限切れ)を使用するため、万が一漏洩しても短時間で無効化されます。一方、Static Credentials(アクセスキー等)は長期間有効で、漏洩するとローテーションするまで悪用される可能性があります。OIDCはセットアップがやや複雑ですが、セキュリティ面で大きな優位性があります。

</details>

結果

5問以上正解の場合

合格です。おめでとうございます。

Step 3「テスト自動化パイプラインを構築しよう」を完了しました。 次は Step 4「Terraformの基本を習得しよう」に進みましょう。

4問以下の場合

もう少し復習しましょう。

問題復習セクション
Q1step3_2 マトリクスビルドと並列実行
Q2step3_1 テスト戦略とCI
Q3step3_3 シークレット管理
Q4step3_4 キャッシュとアーティファクト
Q5step3_1 テスト戦略とCI
Q6step3_3 シークレット管理

Step 3 完了

お疲れさまでした。

学んだこと

  • テスト戦略に基づくCIパイプラインの設計
  • マトリクスビルドによる並列テスト実行
  • GitHub Secretsとシークレット管理のベストプラクティス
  • キャッシュとアーティファクトの活用

次のステップ

Step 4: Terraformの基本を習得しよう(3時間)

CI/CDの基盤ができた今、次はインフラをコードで管理するTerraformを学びます。


推定所要時間: 20分