homebrew tapのformulaファイルの置き場所
前回のエントリで、goreleaserとgithub actionsを使ったhomebrewのformulaファイルの自動生成と登録について書き、既存のツールを3つ移行しました。しかし、その度にpersonal access tokenを発行して、リポジトリのSecretsに登録するという作業が地味地味と面倒でした。*1
github actionsを使わずにgoreleaserをローカルで実行すれば、tokenの発行はローカルマシンの1回で済みますが、ワークフローを考えるとgithub actionsで済ませたいので、homebrew-tapリポジトリに入れるのではなく、ツール自身のリポジトリにformulaを置けないかと考えました。
結果は、リポジトリ直下にformulaファイルを置けば、brew tap
とbrew install
で動きました。ただ、ケースバイケースな気もするので、私が試したhomebrew tap向けのformulaの置き方、以下3パターンを比較します。
- homebrew-tapリポジトリを作ってそこにformulaを集約する
- homebrew-toolnameリポジトリをツール個別に作ってツール用のformulaを入れる
- ツール自身のリポジトリにformulaを入れる(動かなくなりました)
homebrew-tap/tool.rb
homebrew-tap
というリポジトリを作り、そこにformulaを集約します。
reiki4040/ └ homebrew-tap/ ├ rnzoo.rb ├ rnssh.rb └ mogura.rb
2通りのインストールコマンドがあります。
brew install reiki4040/tap/rnzoo
または
brew tap reiki4040/rnzoo brew install reiki4040/rnzoo
でインストールすることができます。
メリット
brew install reiki4040/tap/rnzoo
のように1コマンドでインストールが可能。- homebrew系のリポジトリがこれ1つで済む
- リポジトリを見れば、他のツールの存在がわかる
- リポジトリが分かれているので、ツール側のリポジトリにhomebrew用ファイルのコミットが混ざらない
デメリット
homebrew-tool/tool.rb
もともとツール別に作っていたリポジトリ
reiki4040/ ├ homebrew-rnzoo/ │ └ rnzoo.rb │ ├ homebrew-rnssh/ │ └ rnssh.rb │ └ homebrew-mogura/ └ rnssh.rb
以下でインストール可能です。
brew tap reiki4040/rnzoo brew install reiki4040/rnzoo
メリット
- 実はあんまりないかもしれません。organization内で、homebrewの管理をリポジトリごとバラバラに行いたい場合とかがあれば。
デメリット
- ツールごとにリポジトリを作らないといけない
tool/tool.rb
※2021/04/20現在、私の環境ではこの方式は動かなくなっていました。
reiki4040/ └ rnzoo/ └ rnzoo.rb
インストールは以下のように2コマンド必須で、brew install
で直接インストールはできませんでした。
brew tap reiki4040/rnzoo brew install reiki4040/rnzoo
メリット
- 1つのリポジトリで完結し、シンプル
デメリット
最後に
いくつかパターンがあり、個別にhomebrew-toolリポジトリを作るのはそんなにメリットがないです。通常は、homebrew-tapリポジトリ作るのが一番無難かなと思います。ただ、github actionsを使い、secretsにtoken入れるの面倒(または不安)だなと言う場合は、ツールのリポジトリ直下に置くのもありかなと思います。この辺りは選択肢として知っておくのは良いと思います。