GitHub の Release へのアップロードに ghr を使う
GitHub の Release へカジュアルにアップロードする方法はないものかと考えて、CLI ツールを検討するに至った。 候補はいくつかみつかったが、シンプルで使いやすそうな ghr を試してみた。
一般的なアップロード方法
もっともベーシックな方法としては、Web UI からポチポチしてアップロードする。 利点としては、わかいやすいので権限さえ渡せば誰でもできること。 欠点としては、コマンドラインから操作できないことと自動化しにくいこと。
GitHub が提供するもうひとつの方法は、API 経由でアップロードすること。 認証には設定画面から発行可能なトークンを利用する。 利点としては、自動化できること。 欠点としては、REST API のドキュメントをよく確認した上でコマンドを打つことになるので、カジュアルには実行できないこと。
ghr とは
ghr は、メルカリインフラエンジニアの @deeeet さんが公開されているツール。 設計的には go-github というライブラリをラップしていて、挙動的には GitHub の API を叩いている。
$ ghr \ -t TOKEN \ # Set Github API Token -u USERNAME \ # Set Github username -r REPO \ # Set repository name -c COMMIT \ # Set target commitish, branch or commit SHA -b BODY \ # Set text describing the contents of the release -p NUM \ # Set amount of parallelism (Default is number of CPU) -delete \ # Delete release and its git tag in advance if it exists -draft \ # Release as draft (Unpublish) -prerelease \ # Crate prerelease TAG PATH
GitHub 上の USERNAME / REPO のリポジトリにアップロードされる。 ポイントは、PATH としてディレクトリも指定できること。 ディレクトリ内の複数のファイルを、一回のコマンドでアップロードできる。 これは、クロスコンパイルするなどしてアップロード対象のファイル複数ある場合に便利である。
あと地味にうれしいところを二つ。
まとめ
ghr 使いやすかったので、常用していきたい。 そもそもながら、hub コマンドにこういった機能が欲しいところではあります。