GHRC: GitHub Repositoryの設定を宣言的に管理するツールを作った
機能としてはRepositoryのLabel, Protected branch, Merge options, etc. の設定をYAMLで宣言的に管理できる。
既存の設定を ghrc import
して .ghrc.yaml
というファイルに書き込み、YAMLをシュッと書き換えて ghrc apply
する、みたいな使い方ができる。
Terraformっぽくplanコマンドも実装したので ghrc plan
でdry-runも可能。
似たツールとしてはTerraformのGitHub Providerや github-labeler が近い。 しかし、Terraformだとややセットアップが面倒なのと、github-labeler は想定しているユースケースが違った。
ghrcではmerge時のオプション( mergeボタンの Squash and merge
とか選ぶやつ)や、Protected branchを管理できるようにした。
チーム開発時にcommitが汚い開発者(自分はこのタイプ)が適当にmaster mergeすると、masterブランチが大変なことになってしまう(許さない)。
そういった事態を避けるため、あるいは特殊なCI/CD上の都合で Squash and merge
を強制したい場合があり、これらをコード(といってもYAML)として管理したいと思った。
Repositoryの設定についてチームのルールとして合意を取るだけではなく、各リポジトリで管理し、Pull Request & CI/CDベースで変更できるようにすると開発ルールが良い感じに統一できて嬉しい。
また、Protected Branchについては設定を忘れていてmasterに誤爆pushするケースが極稀にあるので一緒に設定できるようにした。 こちらもコードレビューのルール等をコードで管理できるようになるので良いんじゃないかと思った。
というわけで気が向いたら使って下さい。