確認済みの事実
- mainへのpushを起点に、GitHub ActionsでLint、型検査、テスト、本番ビルドを実行します。
- deployジョブはverify成功後だけ実行し、同じgithub.shaをチェックアウトします。
- standalone成果物を一時領域で梱包し、SHA-256をrunner側とVPS側で照合します。
- VPSではPM2、nginx設定検査、内部HTTP、Hostヘッダー、TLS SNI、公開HTTPSを順に確認します。
検証と公開を同じSHAでつなぐ
verifyジョブとdeployジョブは、どちらもワークフローを開始した同じコミットを明示的にチェックアウトします。別の時点のmainを暗黙に取得しないことで、テストした内容と転送する内容のずれを防ぎます。
deployはverifyに依存し、pull requestでは公開処理を実行しません。
転送物を一度検査して終わらせない
Next.jsのstandalone出力、静的ファイル、public、PM2設定、コミット情報を一つのパッケージにし、SHA-256を作成します。runnerで照合した後、VPSへ転送し、展開前にもう一度照合します。
秘密鍵や接続先はリポジトリへ書かず、GitHubのSecretsと、事前に確認したホスト鍵を使います。
プロセス起動後に公開経路をたどる
PM2を再起動しただけで完了にせず、アプリ内部、nginxのHost経路、TLS SNI、外部公開URLを順に確認します。nginx設定を変更していない場合も、設定検査と稼働状態は確認します。
公開後はHTMLだけでなく、robots.txt、sitemap.xml、主要ページを再確認し、今回追加するコンテンツ監査でも全indexable URLを巡回します。
確認範囲と制限
- この工程は現在のni-lab.jpの構成に合わせたものです。別のサービスへそのまま適用できる保証はありません。
- ワークフローの成功だけで表示品質を保証できないため、公開後のブラウザ確認を別に行います。