GitLab CIでのDocker Composeを使った統合テスト
GitLab CIでDocker Composeを使った統合テストの実行。データベース、メッセージキュー、アプリケーションを含むマルチコンテナテスト環境のセットアップ。
Docker & Containers
詳細な説明
Docker Composeによる統合テスト
アプリケーションが外部サービス(データベース、キャッシュ、メッセージキュー)に依存する場合、Docker Composeは統合テスト用のスタック全体を確実に起動する方法を提供します。
パイプライン設定
integration_test:
stage: test
image: docker:24
services:
- name: docker:24-dind
alias: docker
before_script:
- apk add --no-cache docker-compose
- docker-compose -f docker-compose.test.yml up -d
- sleep 10
script:
- docker-compose -f docker-compose.test.yml exec -T app npm run test:integration
after_script:
- docker-compose -f docker-compose.test.yml logs
- docker-compose -f docker-compose.test.yml down -v
重要な考慮事項
クリーンアップ用のafter_script: after_scriptはテストが失敗しても常に実行されます。コンテナの停止とデバッグ用ログのキャプチャが保証されます。
アーティファクトのwhen: always: 失敗時でもテスト結果がアップロードされ、問題の調査が可能です。
-Tフラグ: CI環境ではTTYが利用できないため、-Tフラグで擬似TTY割り当てを無効にする必要があります。
ユースケース
実際のデータベース、キャッシュ、メッセージブローカーとの統合テストが必要なアプリケーションに使用します。個々のサービスが依存関係に対してテストされるマイクロサービスアーキテクチャに一般的です。