Mac mini ビルドホストはスケジュール可能なノードでありペットではない——それでもオーケストレータをドレインせずに再起動すれば Slack は真っ赤になる。本 2026 プレイブックでは、新規作業の一時停止、実行中ジョブの安全な完了、代替容量へのラベル切替、タイムラインの共有までを定義し、プラットフォームチームへの信頼を保ちます。GitHub Actions 型のセルフホスト群向けの比較表 2 枚、数値化したドレイン閾値、9 ステップの手順を収録し、他の macOS キュー系統にも転用できます。
Runner 未登録ならまず Mac mini M4 セルフホスト GitHub Actions を。大きなイメージ昇格の直後に保守する場合は、昇格途中でホストを外さないよう カナリアとブルー/グリーン切替 の後にドレインしてください。ウィンドウ中に待機が跳ねたら、まず キュー深度と待機時間 SLO で指標を読み、「パッチが遅い」に飛びつかないでください。
正式ドレインを省略したときの典型障害
- コンパイル強制終了:
xcodebuild中の再起動は壁時計で約 15~40 分を無駄にし、開発者の信頼を数週間損ないます。 - ワークスペースロックの孤児:突然終了は古い
.lockやシミュレータプロセスを残し、次の十数ジョブを連続失敗させます。 - シークレットローテのサプライズ:保守には Keychain や API キー更新が伴いがち。実行中ジョブは正常終了まで古い資格情報を握ることがあります。
引き継ぎ戦略マトリクス
| アプローチ | 追加容量 | ユーザー可視リスク |
|---|---|---|
| ラベルドレイン + ウォーム待機 | 1:1 置換プール | 待機が事前ウォームなら低い |
| 時間制限ドレインのみ | なし | 中——キューが伸びる |
| ハード停止/再起動 | なし | 高——ジョブ失敗 |
待ち続けるか強制完了するか
| 観測 | 閾値 | アクション |
|---|---|---|
| 最古の実行中ジョブ年齢 | < 50 分 | 待機——おそらく正常な長テスト |
| 最古の実行中ジョブ年齢 | > 95 分 | オーナーにページ。キャンセル + 新ホストで再試行を検討 |
| キュー深度と SLO | p95 待機 +25% | オーバーフローラベルまたは短期クラウド Mac レンタル |
| セキュリティパッチ深刻度 | CVSS ≥ 9 | 経営承認付きキャンセルウィンドウ |
ラベルの意味:ドレインとはホストを新規セレクタから外すことであり、バイナリを削除することではありません。サービスはインストールされたままにし、保守延長時は数分で再有効化できます。
9 ステップの保守引き継ぎチェックリスト
- 変更チケットを開く:ホスト名、保守種別、想定時間、ロールバックオーナーを記載。
- 早期告知:平日作業は少なくとも 24 時間前に開発チャネルへ。複数リージョンは 72 時間前。
- 待機容量を確認:置換 Runner が UI で
Idleであることを確認。 - デフォルトラベルから対象を外す:新規ジョブを止め、実行中は完了まで待つ。
- 実行数を監視:5 分ごとに更新し、異常をログ。
- ゼロになったら:Runner サービスをグレースフル停止し、末尾ログを取得。
- 保守実施:OS パッチ、ディスク掃除、Xcode 導入——CMDB メモを残す。
- 再有効化前スモーク:コンパイル・署名・アップロードを触る定型ワークフローを実行。
- 低トラフィック時にラベル復帰:p95 待機を 60 分見てからチケットを閉じる。
人間のミスを抑える自動化フック
手動チェックリストは当番が新人や疲労時に破綻します。API でラベルを切り替え、チケットを開き、定型 Slack を投稿するジョブにハッピーパスを載せましょう。kill -9 や強制再起動の前には人間ゲートを。running_jobs > 0 のときにブレイクグラス ID なしで再起動させないでください。正しく配線すると、誰も「Mac 版 kubectl」を毎回思い出す必要がなく、保守の中央値時間は 18~30% 短くなることが多いです。
- ドレイン開始 Webhook:ホスト名と終了予定タイムスタンプをメトリクス基盤へ送出。
- 実行ジョブ数が 20 分フラットならアラート:長コンパイルではなく詰まったエグゼキュータのサイン。
- 保守モードの自動失効:ラベルが 4 時間以上外れたままクローズなしならページ——最終フリップ忘れ。
自動化は実行されるドキュメントとして扱いましょう。各分岐は構造化 JSON を出し、ポストモーテムで SSH 発掘なしにタイムラインを再現できるようにします。一時レンタルの Mac には CMDB で自動化と同じプレフィックスを付けます。適当なホスト名は二重登録でキューの半分を奪う原因になります。
リージョン待機とバーストレンタル
Mac プールが一都市だけなら、ドレインは必然的にキューイベントになります。香港・日本・韓国・シンガポール・米国に Mac mini M4 待機ノードを置けば、ノート PC を飛ばさず保守を吸収できます。NodeMac の リージョン別料金 はまさにこの重複期向けの短期レンタルを想定しています。パッチ後の対話確認には SSH/VNC ヘルプ を併用してください。
チケットを減らすコミュニケーション要点
コピペにも規律が要ります。毎回四つ:影響ラベル、UTC と現地時刻のウィンドウ、ライブキュー深度の見方、告知を超えてジョブが止まったときの手順。後者を省くチームは最初の 1 時間で重複 IT チケットが約 3 倍 に跳ね上がります——一度測れば二度と省略しません。
大規模ドレインのあと 15 分 の振り返りを:実ダウンタイムは見積を超えたか、誰かがラベルを迂回して Runner 名をハードコードしたか、オーバーフローは本当に負荷を拾ったか。答えを次の保守 RFC に回し、四半期ごとにリセットされないプロセスにします。チケットにはオーケストレータの「実行中ジョブ」グラフのスクリーンショットを 1 枚添え、記憶ではなく証拠を残します。
FAQ
リリースフリーズ週にもドレインすべき?
見た目だけのパッチは延期を優先。セキュリティが要求するならホストを前倒しで増やし、ドレインウィンドウを短くするなどしてプロセス自体は省略しないでください。
保守が変更ウィンドウを超過したら?
まず待機ラベル経由のルーティングを延長し、新しい ETA を明示した「まだ復旧していない」更新を送ります。経営が CI 健全と思い込むあいだにサイレントでキューを飢えさせるより、旧イメージへ戻す方が安上がりです。
Mac mini M4 はドレイン計算を予測しやすくします:Apple Silicon は混在コンパイルとシミュレータ負荷でも電力が安定し、ユニファイドメモリは長時間ドレインでのスワップ固まりを減らし、物理分離は待機ホストを本番と同じ挙動にします——ノートの熱スロットリングではありません。NodeMac は香港・日本・韓国・シンガポール・米国で SSH と VNC 付き専用 Mac mini を提供し、待機プールを共有 VM ではなく実データセンターノードにできます。オンデマンドレンタルは保守シーズンを四半期ごとにリセットされる CAPEX ではなく、カットオーバーと監査と並べられる OPEX に置き換えます。