アプリのデプロイ手順
ここでは、フロントエンドアプリケーションを配備したとき、バックエンド側で必要になる作業手順を説明します。
アカウントの登録
- Front-end アプリケーションの開発者は、Deploy 用の Github アカウントを用意する
- Community Siteで、デプロイ情報を知らせる
- (Hexabase のリポジトリに、Github アカウントを追加する)
- Front-end アプリケーションのサブリポジトリを作成する
- Community Siteで、サブリポジトリと配信用 URL を知らせる
- (Hexabase が、サブリポジトリと配信用 URL を DNS に登録する)
デプロイ情報のテンプレート
- application_name: test
- repository_URL: ?
- framework: nuxtjs/nextjs/sveltekit
- server port: 3000
- (sub)domain_name: test.hexabase.com
- api_servers:
- deployments
- test:
- staging: e.g: https://api.hexabase.com
- production:
- environment_variable:
- buildtime: required?
- yes: .env_stg/env_prod please prepare
- runtime: required?
- yes: .env_stg/env_prod please prepare -> infra will register to k8s
- circleCI (CI):
- deploy_branch:
- staging:
- production:
- approval: required?
- notifications: required?
- channel_to_notify:
- deadline
- date:
- others:
- pre-build-check:
- frameworks:
- nuxt:
- local:
- build: `nuxt build` or `nuxt export` command has no error?
- IP whitelist:
- environment: stg/prod
- address:
- reference project:
本番環境へのデプロイ
- Front-end アプリケーションの開発者は、Front-end アプリケーションのサブリポジトリで、'master'ブランチに code をプッシュする
- CircleCIが変更点をキャッチ
- CircleCIがコンテナをビルドし、コンテナレジストリにプッシュする(次は今月中にコンテナをdockerhubにプッシュする)。
- dockerhubがコンテナに対して脆弱性スキャンを実施し、脅威を検出する(今月中に対応予定)
- CircleCIがlinker-prodにデプロイする。
基本的な手順 (Hexabase の内部動作)
- Kubernetesが、設定準備とインストール
- CircleCIに、プロジェクトとリポジトリをインストール
- CircleCIは、設定ファイルをセッティング
- CircleCIが、ビルド+デプロイを必要なチャンネルに自動通知(パートナー、社内slackチャンネル)
- CircleCIは、選択したクラスタに自動ローリングアップデートを適用
注意事項
フロントエンドアプリケーションを開発する場合、process.env を使わないでください。あなたのアプリケーションをデプロイするときに問題になる場合があります。フロントエンドアプリケーションの実行環境などを切り替えたい場合は、process.env 以外の手段を検討してください。たとえば、Nuxt.jsの場合 nuxt.config.js が利用できます。
参考:ステージング環境へのデプロイ
- front-end アプリケーションの開発者が、作業ブランチを
deploy
にコミット/マージする (パートナーのみ) - CircleCIが変更点をキャッチ
- CircleCIがコンテナをビルドし、コンテナレジストリにプッシュする(次は今月中にコンテナをdockerhubにプッシュする)。
- dockerhubがコンテナに対して脆弱性スキャンを行い、脅威を検出する(今月中に対応予定)。
- CircleCIがlinker-stgにデプロイする。