内製ツールを Homebrew で配布しはじめた話
おはこんばんちは!健康診断で尿酸値過去最高記録を更新できませんでした!残念!(去年9.5, 今年9)
k_enokiです!
この記事は CyberAgent Developers Advent Calendar 2017 - Adventar の7日目の記事です。
6日目はkuro_m88さんの Datadog Logsでアプリケーションログを管理する でした。3年連続 kuro_m88 さんの翌日を担当することになったのは偶然です。
今年は3度目ということで、すこし真面目なネタを書いていこうと思います。
最近お隣の島のグループが作ってくれた超便利なAPIをラップするCLIをgoで作りました(TLS/SSL証明書をとってきたり、LBにアップロードしたり)。それを配布するのにHomebrewを使ってみたよ。と言う話です。
追加とインストール
マカーな皆様には馴染み深いHomebrewですが、実はGitHub Enterpriseでも自作のレポジトリを作ってFormulaを管理することが出来ます。
レポジトリの追加はこれだけ。 GitHubじゃなくても、レポジトリのURIを指定することでtapすることが出来ます。
brew tap enoki/awesome-tools git@github.example.com:enoki/homebrew-awesome-tools.git
ヘルプ見て知ったんですが、
brew tap user/repo
は以下のショートカットだったみたいです。
brew tap user/repo https://github.com/user/homebrew-repo
レポジトリを追加したあとはいつものようにインストールすることができます。
brew install awesome-cli
超カンタンです。READMEにでも書いておけば社内からツールの利用が増えること間違いなしですね!
レポジトリとFormula
レポジトリとFormulaの例です。
$ tree . . ├── Formula │ └── awesome-cli.rb └── README.md
class AwesomeCli < Formula desc "awesome cli" homepage "" url "https://example.net/enoki/awesome-cli/v1.0.0/awesome-cli_Darwin_x86_64.tar.gz" version "1.0.0" def install bin.install "awesome" end test do system "#{bin}/awesome -version" end end
Formulaという名前のディレクトリにrubyのスクリプト(こいつがFormula)を置くだけです。 上記の例ではtar.gzを解凍して出てきたバイナリを配置するだけの内容ですが、複雑な処理も書くことが出来るので興味がある方は以下を参照してみてください。
新しいツールが出来たあとの配布も簡単です。
Formulaを追加したあと利用者に brew update && brew install してもらうだけです。
どんどん新しいツールを作ってどんどん配布していきましょう!!!更新も簡単です!
新規追加
$ brew update Updated 1 tap (enoki/awesome-tools). ==> New Formulae enoki/awesome-tools/awewome-cli
更新
既存バージョンがインストール済みの場合は新しいバージョンがインストールされます。
brew update Updated 1 tap (enoki/awesome-tools). ==> Updated Formulae enoki/awesome-tools/awesome-cli
感想
Homebrewのおかげでツールのインストールが配布が大変楽になりました。
WikiやREADMEに詳細な手順を書かなくてすむのと作業手順が2ステップなので、ツール提供者と利用者両方共にメリットがあると思います。
今は諸事情でチーム内でしか提供できてないのですが、ゆくゆくはメディア事業全体にツールを公開できるようにしたいです。
WindowsやLinuxを使ってる方々にはReleasePageにバイナリ置いてあるから使ってね!というのが現状ですが、Mac以外もいずれは何かしらの方法で簡単に配布できるようにしたいですね。
明日(これ書いてるのは既に12/8)は村井翔太朗さんがみんなが知りたいこと書くみたいです。いや〜楽しみ!