npx で実行できる、GitHub repository ruleset の one-shot setup CLI です。
Terraform は使いません。terraform.tfstate も生成しません。内部では GitHub CLI の gh api を使って、対象 repository に対して直接 GitHub API を実行します。
- 現在の git remote から
OWNER/REPOを自動検出 - 対話的に default branch を選択
maindevelop- 任意の branch
- branch が存在しなければ、現在の GitHub default branch から作成
- repository の
default_branchを選択した branch に変更 - 選択した branch に対して PR 必須 ruleset を作成または更新
- branch deletion を禁止
- non-fast-forward / force push 系を禁止
- 既存の同名 ruleset がある場合は更新するので、再実行しやすい
- Node.js 18+
- git
- GitHub CLI
gh gh auth login済み- 対象 repository に対する admin 権限
確認:
gh auth status対象 repository の中で実行します。
npx @lilpacy/setup-github-rules実行すると、default branch を選べます。
Choose the repository default branch:
1) main
2) develop
3) other
Select [1/2/3]:npx @lilpacy/setup-github-rules --repo lilpacy/repo-anpx @lilpacy/setup-github-rules --repo lilpacy/repo-a --branch develop --yesnpx @lilpacy/setup-github-rules \
--repo lilpacy/repo-a \
--branch develop \
--required-approvals 1 \
--yes--required-approvals を省略すると、実行中に 0 から 6 を選べます。Enter だけ押した場合は 1 です。
Choose the number of required approving reviews.
Use 0 for solo repositories where nobody else can approve your PR.
Required approvals [0-6] (default: 1):1 人で開発している repository なら、通常は 0 を選ぶのが安全です。
npx @lilpacy/setup-github-rules --repo lilpacy/repo-a --dry-run| Option | Description | Default |
|---|---|---|
--repo OWNER/REPO |
対象 repository | current git remote から検出 |
--branch BRANCH |
default branch / protected branch | 対話式で選択 |
--required-approvals N |
必須 approval 数 | 1 |
--ruleset-name NAME |
ruleset 名 | Require PR to <branch> |
--yes, -y |
最終確認をスキップ | false |
--dry-run |
変更せず plan だけ表示 | false |
--help, -h |
help 表示 | - |
Plan:
Repository: lilpacy/repo-a
Current default: main
New default: develop
Protected branch: develop
Required approvals: 1
Ruleset name: Require PR to develop
Apply these changes? [y/N]: y
Creating branch 'develop' from 'main'...
Setting default branch to 'develop'...
Creating ruleset 'Require PR to develop'...
Done.
Default branch 'develop' now requires Pull Requests before changes can be merged.publish 前にローカルで試す場合:
cd setup-github-rules-cli
npm link
setup-github-rules --helpまたは package directory を直接指定して実行できます。
npx /path/to/setup-github-rules-cli --helpこの repository は scoped package @lilpacy/setup-github-rules として公開する前提です。
package.json には publishConfig.access=public を入れているので、初回 publish でも --access public を毎回付ける必要はありません。
npm login
npm run prepublishOnly
npm publish公開確認:
npm view @lilpacy/setup-github-rules version
npx @lilpacy/setup-github-rules --helpこの CLI は Terraform ではありません。state や desired state 管理はありません。
その代わり、以下の用途に向いています。
- 新規 repository 作成直後に ruleset をすぐ反映したい
gh認証をそのまま使いたい- repository 内に IaC ファイルや state を残したくない
- 小〜中規模で、ワンコマンド setup を優先したい
厳密な drift detection、PR review 付きの設定変更、org 全体の一元管理が必要な場合は Terraform / OpenTofu 方式のほうが向いています。