複数 のGoツールをひとつのhomebrewリポジトリで配布 する
Goで
aws や hashicorp がひとつの homebrew
なお、githubの
homebrew用 リポジトリ
homebrew-tap
とする。わかりやすい。
GITHUB Personal access tokens
まず、
Actions secrets
メニューで HOMEBREW_TAP_GITHUB_TOKEN
という
goreleaser
releaser.yaml
まず、.github/workflows/releaser.yaml
にHOMEBREW_TAP_GITHUB_TOKEN
の
name: releaser
on:
push:
tags:
- v*
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 1.19
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v4
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }}
workflow
.goreleaser.yaml
つづいて、プロジェクトirir
というツールの
brews:
- tap:
owner: bayashi
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
folder: Formula
homepage: https://github.com/bayashi/irir
description: A filter to add colors for text lines generically from a YAML configuration file easily
test: |
system "#{bin}/irir", '--version'
brews:
- tap:
owner: {あなたのgithubアカウント}
name: {homebrew用 リポジトリ名 }
token: "{{ .Env.CLIツールのリポジトリでsecretsに登録 したtokenの名前 }}"
folder: {homebrew用 リポジトリでのディレクトリ名 。特 に変更 する必要 もないので Formula のまま}
homepage: {CLIツールを紹介 するページURL}
description: {CLIツールの紹介 文 }
test: |
system "#{bin}/{CLIツールコマンド}", '{必要 ならオプション}' # テスト発行 するコマンド
brews.tap.name
のところを {homebrew
として、homebrew-tap
とHOMEBREW_TAP_GITHUB_TOKEN
は
Workflow permissions
この
CLIのリポジトリの settings タブにある、Actions.General のメニューのWorkflow permissions
というのがあるので、これを read and write permissions
に
これをしておかないと、goreleaser のワークフローが 403 でこける。
homebrew 配布 コマンド
goreleaser が{ツール
が
brew tap {あなたのgithubアカウント}/tap
brew install {あなたのgithubアカウント}/tap/{ツール名 }
brew tap bayashi/tap
brew install bayashi/tap/irir
となります。
まとめ
リポジトリを