OpenClaw を CI に載せるときの核心は三つです:誰が起動するか、どこで動くか、どう認証するか。GitHub ホストの macOS Runner と MacCloud 上の セルフホスト Runner は併用できます。前者は軽いステップ、後者はディスク、kext、常駐サービスに敏感な負荷向きです。
1. トリガー:毎 push でフル実行しない
長いジョブは workflow_dispatch やスケジュール、PR ではパスフィルタで無駄な分数を減らします。OpenClaw 関連は 専用ジョブ に分け、汎用 lint 行列と混ぜて頻繁に中断されないようにします。
2. シークレット、トークン、監査
本番シークレットは GitHub Environments に入れ、必須レビュアーを設定します。MacCloud API やチケット API には 短期トークン をローテーション付きで使い、リポジトリに直書き禁止。監査ログで「どの run がどの資格情報を使ったか」が辿れるようにします。
3. MacCloud 上のセルフホスト Runner
専用 Mac に Runner を登録したら、OpenClaw ジョブ専用ラベル(例:runs-on: [self-hosted, macOS, openclaw])を付け、汎用 iOS ビルド列と分離します。メンテや OS アップグレード前に GitHub 側で Runner を 無効化 し、中途半端な状態でジョブを取らないようにします。
4. キャッシュ、アーティファクト、ログ
大きな依存は Actions Cache か社内レジストリへ。ログやレポートは artifact でアップロードし、OpenClaw 側イベントと突き合わせやすくします。キャッシュキーには ロックファイルのハッシュ を含め、古い依存を新しいと誤認しないようにします。
5. 失敗時の爆発半径を抑える
OpenClaw ステップにタイムアウトと再試行上限を設定し、認証失敗やクォタ枯渇など回復不能なエラーは 即失敗+ラベル にします。無限リトライでキューを塞がないようにし、バックオフは 自動化シナリオ と揃えます。
6. セルフチェック
- トリガーは デフォルトブランチ、PR、手動 をカバーしているか?
- Environment 保護で 未レビューの fork PR を止められるか?
- Runner ラベルとジョブ行列が 1 対 1 で漏れ・誤実行がないか?
- artifact のログ粒度はトラブルシュートに 十分か?
常駐プロセスと Runner を同居させる場合は MacCloud 実践 を再読し、ディスク、グレースフルシャットダウン、課金境界を揃えてください。