ノート

Static Site / Release / Process Management

アップロード前にリリースマニフェストを作り、タイムアウト時は子プロセス全体を終了する

静的リリースで再利用できる二つの原則。アップロード前にファイル一覧を確定して検証し、タイムアウトの対象をコマンドが起動した全子プロセスへ広げる。

マニフェストをアップロードより先に作る

最終ビルドディレクトリからリリースマニフェストを生成し、その後にアップロードを始めます。相対パス、ファイルサイズ、内容ダイジェストを少なくとも記録し、送信前に一度検証します。アップロード処理は確定した版の集合だけを扱い、マニフェスト作成後にビルド内容が変われば、異なる版のファイルが混ざる前に検証が失敗します。

配布先の確認にも同じマニフェストを使い、記載された各ファイルの存在とダイジェストを照合します。これにより、ディレクトリの存在やトップページの応答だけで完全な版と判断せず、公開対象と確認基準を一つの資料で定義できます。

タイムアウトの所有範囲を子孫まで含める

外側のプロセスだけを終了すると、その処理が起動したビルダー、圧縮処理、転送処理が残る場合があります。一つのコマンドをタイムアウトの境界として、プロセスグループまたは同等のツリー関係を保持します。期限に達したら、各プラットフォームの方法でプロセスツリー全体を直ちに終了し、外側のプロセスが終了するまで待ってからタイムアウトを報告します。

Windows では taskkill /T /F を使い、POSIX 系ではプロセスグループへ SIGKILL を送ります。正常終了の要求後に猶予時間を置いて強制終了する二段階方式は、将来の独立した設計案にはできますが、現在の方式を表すものではありません。