Q85 — AWS DVA-C02 第1章
第 85/100 問 | ← 第1章
ある開発者が、Webアプリケーション向けの継続的インテグレーションおよび継続的デリバリー(CI/CD)メカニズムとしてAWS CodePipelineパイプラインを使用しています。開発者は、アプリケーションコードの機能を自動的にテストするユニットテストを実装しました。ユニットテストは、各個別のチェック結果を表示するテストレポートを生成します。開発者は、CI/CDパイプライン内でこれらのテストを自動実行したいと考えています。この要件を満たし、運用作業量を最小限に抑えるソリューションはどれですか?
- A. Gitのプリコミットフックを作成し、各コミット前にテストを実行します。プロジェクトに参加するすべての開発者がローカルにこのプリコミットフックをインストールするよう保証します。AWS CodeCommitへ変更をプッシュする前に、テストレポートを確認し、問題を解決します。
- B. パイプラインに新しいステージを追加します。プロバイダーとしてAWS CodeBuildを使用します。コードリビジョンをテスト環境へデプロイするステージの後に新しいステージを追加します。テストが失敗した場合は、CodeBuildステージが失敗するようなビルド仕様を記述します。CodeBuildのテストレポート機能を使用して、レポートをCodeBuildコンソールと統合します。CodeBuild内でテスト結果を確認し、問題を解決します。
- C. パイプラインに新しいステージを追加します。プロバイダーとしてAWS CodeBuildを使用します。コードリビジョンをテスト環境へデプロイするステージの前に新しいステージを追加します。テストが失敗した場合は、CodeBuildステージが失敗するようなビルド仕様を記述します。CodeBuildのテストレポート機能を使用して、レポートをCodeBuildコンソールと統合します。CodeBuild内でテスト結果を確認し、問題を解決します。 ✓
- D. パイプラインに新しいステージを追加します。プロバイダーとしてJenkinsを使用します。CodePipelineをJenkinsでユニットテストを実行するように設定します。テストが失敗した場合は、Jenkinsfileでステージが失敗するように記述します。Jenkinsのテストレポートプラグインを使用して、レポートをJenkinsダッシュボードと統合します。Jenkins内でテスト結果を確認し、問題を解決します。
正解: C. パイプラインに新しいステージを追加します。プロバイダーとしてAWS CodeBuildを使用します。コードリビジョンをテスト環境へデプロイするステージの前に新しいステージを追加します。テストが失敗した場合は、CodeBuildステージが失敗するようなビルド仕様を記述します。CodeBuildのテストレポート機能を使用して、レポートをCodeBuildコンソールと統合します。CodeBuild内でテスト結果を確認し、問題を解決します。
解説
正しい選択肢は、以下の2つの重要な条件を満たす必要があります:1. テストステージはデプロイ前に実行される(迅速なフィードバックを得るため)、2. AWSネイティブサービスを使用することで統合コストを削減する。選択肢Cは、テスト環境へのデプロイ前にCodeBuildステージを追加し、その組み込みテストレポート機能を活用して自動テストを実現しており、サードパーティツール(Jenkinsは追加設定が必要)を必要とせず、CI/CDプロセスの順序にも適合しています。選択肢BおよびDはステージ順序の誤りやツールの冗長性という問題を抱え、選択肢Aはローカルフックに依存しており、自動化されたプロセスを保証できません。