Service Containers (github actions)
ジョブ実行のSidecarとして、テストやビルドに必要なDBやメッセージキューなど簡単に利用できる services:で補助的なcontaienrを定義する
例
code:yaml
jobs:
test:
runs-on: ubuntu-latest
services:
postgres: # ← このキー名がそのままホスト名になる
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >- # ヘルスチェック
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- run: psql -h localhost -p 5432 ...
services.postgres.image
利用する Docker イメージ
ports
ホストとコンテナのポートマッピング
ただし GitHub Actions 内では必須ではなく、多くの場合 localhost:ポート番号 でアクセス可能
env
サービスコンテナに渡す環境変数。
options
docker run に渡すオプション(ヘルスチェックを仕込むのが定番)。
テストステップでは localhost を通じてサービスに接続できる。
注意点
1. 起動待ち時間
サービスコンテナは立ち上がるまでに数秒~数十秒かかる
healthcheck を設定してテスト開始前に待つのが安心
2. 永続性なし
コンテナと一緒にストレージも消えるので、テスト後にデータは残らない。
3. リソース制限
GitHub-hosted runner は CPU・メモリに制限があるため、重いサービスを複数立てると落ちることがある。
4. ポート競合
複数のサービスが同じポートを使うと競合するので注意。