Q51 — AWS DOP-C02 第3章

第 51/100 問 | ← 第3章

ソフトウェア開発チームが AWS CodePipeline を使用して Java アプリケーションのリリースパイプラインを自動化しています。パイプラインはソースステージ、ビルドステージ、デプロイステージで構成されています。各ステージには runOrder 値が 1 のアクションが含まれています。 チームは、既存のリリースパイプラインにユニットテストを追加したいと考えています。チームは、ユニットテストが成功した場合のみコード変更をデプロイするソリューションが必要です。 これらの要件を満たすソリューションはどれですか?

正解: B. ビルドステージを変更し、runOrder 値が 2 のテストアクションを追加します。AWS CodeBuild をアクションプロバイダーとして使用してユニットテストを実行します。

解説

AWS CodePipeline のステージ内アクションの実行順序は `runOrder` によって制御されます。同一ステージ内で `runOrder` の値が小さいアクションが優先的に実行されます。元のビルドステージにはすでに `runOrder=1` のアクションが存在するため、新しいテストアクションはその後に実行される必要があります。AWS CodeBuild はカスタムビルドコマンドをサポートしており、ユニットテストの実行に適しています。AWS ドキュメントによると、同一ステージ内でアクションを順次実行するには、より高い `runOrder` 値を設定する必要があります。オプション B のテストアクションは `runOrder=2` と設定されており、既存のビルドアクション完了後に実行され、CodeBuild を介してテストを実行することで、テスト成功後にのみ次のデプロイステージへ進むことを保証します。オプション A の `runOrder=1` ではテストとビルドが並列実行され、依存関係の順序が保証されません。オプション C および D ではテストがデプロイステージに配置されており、テストはデプロイ前に実行すべきという論理的要件に反しています。