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割り当てを無効にする必要があります。

ユースケース

実際のデータベース、キャッシュ、メッセージブローカーとの統合テストが必要なアプリケーションに使用します。個々のサービスが依存関係に対してテストされるマイクロサービスアーキテクチャに一般的です。

試してみる — GitLab CI Config Generator

フルツールを開く