https://github.com/mt4110/ci-self-runner
個人運用向け self-hosted CI runner kit for macOS。colima+docker+GitHub Actions を最短導入し、owner guard付きで verify を安全・再現的に実行する運用基盤。外部fork PRは拒否して事故を防止。運用を簡単化。安定運用。
https://github.com/mt4110/ci-self-runner
go self-hosted-runner shell
Last synced: 4 months ago
JSON representation
個人運用向け self-hosted CI runner kit for macOS。colima+docker+GitHub Actions を最短導入し、owner guard付きで verify を安全・再現的に実行する運用基盤。外部fork PRは拒否して事故を防止。運用を簡単化。安定運用。
- Host: GitHub
- URL: https://github.com/mt4110/ci-self-runner
- Owner: mt4110
- License: mit
- Created: 2026-02-19T05:45:46.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-27T10:12:15.000Z (4 months ago)
- Last Synced: 2026-02-27T15:40:19.195Z (4 months ago)
- Topics: go, self-hosted-runner, shell
- Language: Go
- Homepage:
- Size: 650 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# runner-kit (self-hosted runner + colima + docker)
macOS 向けの self-hosted runner 運用キットです。
## 最短導線
最初の1回だけ:
```bash
cd ~/dev/ci-self-runner
bash ops/ci/install_cli.sh
```
CI対象リポジトリで(ローカル):
```bash
cd ~/dev/maakie-brainlab
ci-self up
```
- `ci-self up` は `register + run-focus` を連続実行
- `verify.yml` / PRテンプレートが無ければ自動雛形を生成
- 雛形の生成はローカルファイル変更のみ(GitHub反映には commit/push が必要)
- 対象リポジトリに `flake.nix` がある場合、runner マシンに `nix` の事前インストールが必要
- `ci-self` / `verify.yml` は `nix-daemon.sh` を自動読み込みして `nix` を検出(毎回の手動 `source` は不要)
- 既存の `verify.yml` が古い場合は `bash ops/ci/scaffold_verify_workflow.sh --repo --apply --force` で更新
## Mac mini ワンコマンド(推奨)
MacBook から 1 コマンドで「鍵認証確認 -> 同期 -> Mac mini 実行 -> 結果回収」まで行う:
```bash
ci-self remote-ci --host @ --project-dir '~/dev/maakie-brainlab' --repo mt4110/maakie-brainlab
```
`remote-ci` の実行内容:
1. SSH 公開鍵認証(password禁止)を検証
2. ローカル作業ツリーを Mac mini へ `rsync` 同期
3. (repo指定時)runner bootstrap をベストエフォート実行
4. Mac mini で `ops/ci/run_verify_full.sh` を実行
5. `verify-full.status` と `out/logs` をローカル `out/remote//` に回収
公開鍵未登録時は、`authorized_keys` 登録のヒントを出して停止します。
補足:
- `--host` は `ssh` の接続先文字列(`user@host` / IP / `~/.ssh/config` のHost別名)
- `--project-dir` に `~` を使う場合は `--project-dir '~/'` のようにクオート
- runner 初期化/復旧専用の旧導線は `ci-self remote-up`
## さらに短縮する設定ファイル
`ci-self` は `.ci-self.env` を自動読み込みします。
作成:
```bash
ci-self config-init
```
例:
```env
CI_SELF_REPO=mt4110/maakie-brainlab
CI_SELF_REF=main
CI_SELF_PROJECT_DIR=/Users//dev/maakie-brainlab
CI_SELF_REMOTE_HOST=@mac-mini.local
CI_SELF_REMOTE_PROJECT_DIR=/Users//dev/maakie-brainlab
CI_SELF_PR_BASE=main
```
以後はオプションを減らして実行できます。
## 主要コマンド
- `ci-self up`: ローカル最短(register + run-focus)
- `ci-self focus`: run-focus 後、PR未作成なら自動作成し checks を監視
- `ci-self remote-ci`: 鍵必須・同期・Mac mini実行・結果回収を1コマンドで実行
- `ci-self doctor --fix`: 依存/gh auth/colima/docker/runner_health を診断し可能な範囲で修復
- `ci-self doctor --repo-dir `: `flake.nix` リポジトリの Nix 到達性も含めて診断
- `ci-self remote-up`: SSH先で register + run-focus(同期しない旧導線)
- `ci-self config-init`: `.ci-self.env` テンプレート生成
注: `doctor --fix` は `gh auth login` だけは自動化できないため、未ログイン時は手動ログインが必要です。
## 初回セットアップ(対象リポジトリ)
```bash
# 必須: ownerガード
gh variable set SELF_HOSTED_OWNER -b "$(gh repo view --json owner --jq .owner.login)" -R
# 任意: 失敗通知
printf '%s' '' | gh secret set DISCORD_WEBHOOK_URL -R
# verify.yml が未作成なら(404回避)
bash ops/ci/scaffold_verify_workflow.sh --repo ~/dev/ --apply
```
## セキュリティ前提
- 個人運用(single-owner)向け
- self-hosted 実行は `SELF_HOSTED_OWNER` 一致時のみ許可
- 外部コラボ / fork PR で使う場合は先に `docs/ci/SECURITY_HARDENING_TASK.md` を実施
## 詳細
- `docs/ci/QUICKSTART.md`
- `docs/ci/RUNBOOK.md`
- `docs/ci/SECURITY_HARDENING_TASK.md`