公開されたか確かめる
自動デプロイを止めている構成では、PRをマージしても本番は変わらない。 「マージ済み」と「公開済み」が別の状態になるので、公開されたかを毎回確かめる必要がある。
なぜマージだけでは足りないのか
ホスティングの無料枠にはデプロイ回数の上限がある。 上限に当たると新しいデプロイが通らなくなり、直したい不具合があっても出せない。 そこで各プロジェクトの自動デプロイを切り、必要なときだけ手で起動する運用にした。
代わりに背負ったのが、反映漏れが黙って起きること。 マージは成功し、CIも緑で、本番だけが古い。エラーはどこにも出ない。
確かめる3点
上から順に見る。前の段が通らないうちに次を見ても意味がない。
1. 本番URLを直接開く
ローカルのビルド結果ではなく、本番のURLを見る。 静的書き出しの構成では、ビルドが通ってもデプロイしていなければ本番は前のままなので、 ローカルで見えていることは何の証拠にもならない。
2. 画像を実体として取りに行く
ページのHTMLが出ていても、参照している画像が404ということが起きる。 特にアイキャッチは、記事と同じコミットに画像を入れ忘れると、 記事だけ公開されて画像が欠けた状態になる。
ページを開いて目視するのではなく、画像URLを直接取りに行って確かめる。 壊れた画像は、ブラウザによっては代替表示に紛れて気づかない。
3. sitemapと突き合わせる
1本ずつ手で開く方法は、記事が増えると続かない。 手元にある公開対象の一覧と、本番のsitemapの差分を取るのが実用的な形になる。
- 手元にあってsitemapに無い → 未公開。デプロイが要る
- sitemapにあって手元に無い → 消したはずのものが残っている
この差分がゼロであることを、公開作業の終了条件にする。
自動にする範囲
全部を自動にはしていない。自動にしたのは次の2つだけ。
- 公開前: アイキャッチの実体が無い、本文に図が1点も無い、といった記事を通さないガード。 警告で続行させず、非ゼロ終了で止める
- 公開後: 手元の記事一覧と本番sitemapの突き合わせ
デプロイの起動そのものは手のままにしている。 自動デプロイを切った理由が回数の上限なので、そこを自動に戻すと元の問題に戻る。
成果物の取りこぼしも同じ形
公開漏れと同じ形の失敗が、作業側にもある。 エージェントに任せた作業で、生成物がコミットされないまま作業ディレクトリに残るケース。 作業した側の認識では完了していて、エラーも出ない。
同じ内容を2か所に置いている定義ファイル(スキル定義など)の同期ずれも同種で、 片方が古いままだと、そちらを読む側には指示が届かない。壊れずに、静かに無効になる。
どちらも作業ツリーの状態を見れば分かる。 作業の完了条件に「コミット済みであること」を含めておくと、この取りこぼしは減る。
関連
- 経緯: マージしても公開はされていなかった
- 配信基盤の使い分けと無料枠の話: 配信基盤の使い分け
- 作っているもの: プロダクト