街づくり12日目・第四章|CIの仕事場を役割ごとに分ける

2026年8月26日、街づくり12日目・第四章。
testを速く回す仕事と、DEVへ接続する仕事と、公開物を届ける仕事は、必要な権限が違います。KOGAMAI JUNCTIONでは、全部を一つの万能runnerへ集めず、用途別のself-hosted runnerとして分けています。
品質検査へ秘密を渡さない
Pull Requestのformatter、型検査、contract test、buildはsecret-freeで実行します。変更されたcodeを検査するjobへ、運用Environmentやprivate networkの権限を渡しません。
一方、deploy、backup、read-backのような処理は、review済みmain、exact commit、明示入力、保護されたEnvironmentを要求します。通常CIが混雑したことを理由に、権限境界を省略した経路へ自動で切り替えません。
一つのjobを一つの実行環境へ
現在の品質runnerはone-job ephemeralを基本にします。jobが終わったfilesystemを別repositoryへ使い回さず、対象repository、runner名、labelの完全一致をAPIでread-backします。異常終了で残るoffline recordは、状態と経過時間を再確認してexact IDだけをcleanupします。
generation leaseとfencingを使うVM lifecycleは、将来の特権runner向け設計です。まだ現在の品質runnerが備える機能としては扱いません。
これにより「runnerがonlineだった」だけで安全と判断せず、どのsourceを、どの役割で、どのjobが実行したかを追跡できます。
greenの意味を一つにしない
PR CIのgreen、merge後main CIのgreen、運用workflowの成功、runtime read-back、人間のgameplay確認は別の証拠です。途中の一つを最終完了へ読み替えないことで、codeは正しいがruntimeが違う、という状態も安全に停止できます。