了解しました。
では、以下に 🔖 第10章:発展編 より
10.2 devcontainerベースのCI/CD環境への展開 を詳しく解説します。
.devcontainer/Dockerfile
を CIのビルド用コンテナとして流用可能通常のCI用Dockerfile | devcontainer流用した場合 |
---|---|
CI専用に別途Dockerfileを書く | ローカルで使ってるDockerfileをそのまま使える |
開発環境とCIで微妙な違いが出る | 完全に一致する環境(OS, Gem, Node, etc)が保証される |
CIでだけエラーが出ることがある | ローカルとCIで動作差がないので再現性が高い |
auth/
├── .devcontainer/
│ ├── devcontainer.json
│ └── Dockerfile ← これをCIのbuildコンテナとして使用
├── .gitlab-ci.yml ← ここでDockerfileを指定
└── その他のRailsコード
# auth/.gitlab-ci.yml
stages:
- test
- build
# 開発環境と同じDockerfileでテスト実行
test:
stage: test
image:
name: docker:latest
entrypoint: [""] # dockerコマンドを使うためにentrypoint解除
services:
- docker:dind # Docker in Dockerでbuildを実現
script:
# devcontainerのDockerfileを使ってbuild
- docker build -f .devcontainer/Dockerfile -t auth-dev .
- docker run -v $(pwd):/workspace auth-dev bundle exec rspec