デプロイのたびにドキドキしていた時期がありました。
手順書を読みながら SSH でサーバーに入り、git pull して npm run build して、ブラウザで確認して、「よし動いた」と安堵する。毎回このルーティンでした。手順を一つ飛ばすと壊れました。
GitHub Actions で自動化した
main ブランチへのマージをトリガーに、テストを走らせてコンテナをビルドし、本番にデプロイするパイプラインを書きました。
on:
push:
branches: [main]
jobs:
deploy:
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm test
- name: Build & push image
run: docker build -t myapp . && docker push myapp
- name: Deploy
run: ssh deployer@prod "docker pull myapp && docker compose up -d"
変わったこと
プルリクを出してマージするだけでデプロイが終わります。デプロイを「イベント」として意識しなくなりました。テストが落ちれば main に入らないので、本番で初めて気づくパターンが大幅に減りました。
整備コストは最初の数時間だけです。その後の恩恵を考えると、もっと早くやればよかったと思っています。