# Feature ブランチのデプロイ(WIP)
# 概要
GitHub でアプリケーションを開発していて、Feature ブランチを作成した段階でそれに対応するテスト環境を自動デプロイするにはどうしたらよいかという調査のまとめ。
# 背景
Web ページ( Nuxt.js 利用 )のデプロイに Netlify を使ったときの体験が良かった。フローとしては以下の感じ
- Feature ブランチや BugFix ブランチを切って作業し、キリのいいところで master へ PR
- PR 作成をトリガーとして Netlify が起動 ビルドとブラウザでアクセスできるテスト環境をデプロイ
- 動作をチェックして直したほうが良さそうならコードを修正してプッシュ
- プッシュをトリガーとして Netlify が再度ビルドしてテスト環境を更新
- 3,4 を繰り返して OK なら master にマージ
- マージをトリガーにして Netlify が本番環境の更新
人間は Git 使って開発しているだけでブランチ毎に自動でテスト環境を用意してくれるのが大変使い勝手が良かった。ただ、マネージドなサービスだけあってそれなりに料金がかかる。お金を抑えつつ、このマネージド感を AWS で出すにはどうしたらいいか気になった。
# 方法(調査中)
# Amplify Console
Web アプリケーションのデプロイに利用できるサービスとして Amplify Console があり、Feature ブランチのデプロイを行ってくれる。ただ、料金的に大きく変わらないので今回は対象から外す。
# CodePipeline
少々マネージド感は劣るがビルド、デプロイで利用できるサービスとしては CodePipeline がある。 ソースとなる Git リポジトリでコードをプッシュするとパイプラインが起動してビルドとデプロイを済ませてくれる。 ただ、Pipeline のトリガーにできるブランチを一つ指定しなければいけないため、PR 作成かブランチ作成時に新たにパイプラインを作成する必要があるのが少し面倒。 テスト環境として develop ブランチを用意するのもあるが、そこまでマージしないと他のメンバー(非開発者)がブラウザで確認できる環境ができないのは少し億劫。 調べてみると以下のブログ記事があった。
CloudFormation でデプロイ用のパイプラインを管理し、各ブランチ追加時に CLI で update-stack を一度実行するとブランチに対応するパイプラインを作成できるという方法を案内している。 ぎりぎり手動での作業が残っているので、ブランチの追加時に自動で update-stack を実行する仕組みさえ実装できたら満足できるレベルまで整いそう。