了解しました。

では、以下に 🔖 第10章:発展編 より

10.2 devcontainerベースのCI/CD環境への展開 を詳しく解説します。


🔖 10.2 devcontainerベースのCI/CD環境への展開


✅ 要点まとめ


🧠 なぜdevcontainerをCIに使うのか?

通常のCI用Dockerfile devcontainer流用した場合
CI専用に別途Dockerfileを書く ローカルで使ってるDockerfileをそのまま使える
開発環境とCIで微妙な違いが出る 完全に一致する環境(OS, Gem, Node, etc)が保証される
CIでだけエラーが出ることがある ローカルとCIで動作差がないので再現性が高い

📁 基本構成(authの例)

auth/
├── .devcontainer/
│   ├── devcontainer.json
│   └── Dockerfile ← これをCIのbuildコンテナとして使用
├── .gitlab-ci.yml ← ここでDockerfileを指定
└── その他のRailsコード


🧪 .gitlab-ci.yml のサンプル(devcontainerのDockerfileを再利用)

# 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