OpenClaw を CI に載せるときの核心は三つです:誰が起動するか、どこで動くか、どう認証するか。GitHub ホストの macOS Runner と MacCloud 上の セルフホスト Runner は併用できます。前者は軽いステップ、後者はディスク、kext、常駐サービスに敏感な負荷向きです。

1. トリガー:毎 push でフル実行しない

長いジョブは workflow_dispatch やスケジュール、PR ではパスフィルタで無駄な分数を減らします。OpenClaw 関連は 専用ジョブ に分け、汎用 lint 行列と混ぜて頻繁に中断されないようにします。

2. シークレット、トークン、監査

本番シークレットは GitHub Environments に入れ、必須レビュアーを設定します。MacCloud API やチケット API には 短期トークン をローテーション付きで使い、リポジトリに直書き禁止。監査ログで「どの run がどの資格情報を使ったか」が辿れるようにします。

最低ライン: 本番 Mac や課金に触れる資格情報は失効可能で追跡可能であること。

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 実践 を再読し、ディスク、グレースフルシャットダウン、課金境界を揃えてください。