GitHub CLI を使ってみた
GitHub 上で開発業務を行うのが日常となっていますが、Web ブラウザ上から操作したり情報を取得しているうちに、これって CLI で出来ないのかなぁ、とふと思ったので調べてみたところズバリのものが公式にありました。
GitHub CLI について
cli/cli: GitHub’s official command line tool によると、Go 言語で書かれており、macOS、Linux、Windows で動作するようです。
どうやら、昨年2月にベータ版公開、9月には正式リリースされていたようです。
マニュアルを確認すると、PR や issue の他、色々な機能があるようです。
macOS にインストール&セットアップ
下記のページに沿って、手順を進めます。
インストール
README に記載の通り、Homebrew からインストール出来ます。
% brew install gh % gh --version gh version 1.12.1 (2021-07-01) https://github.com/cli/cli/releases/tag/v1.12.1
認証
認証の選択肢はいくつかあるのですが、HTTPS プロトコルを使った Web ログイン認証を選択しました。
% gh auth login ? What account do you want to log into? GitHub.com ? What is your preferred protocol for Git operations? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How would you like to authenticate GitHub CLI? Login with a web browser ! First copy your one-time code: ****-**** - Press Enter to open github.com in your browser...
Enterキーを押すとWebブラウザが開くので、one-time code を入力して Continue
をクリックします。
GitHub CLI に許可する操作が表示されるので、確認して Authorize github
をクリックします。
確認のためパスワードを入力します。
このような画面が出て、GitHub CLI の OAuth 認証が完了します。
ターミナルに戻って作業を続行します。
✓ Authentication complete. Press Enter to continue... - gh config set -h github.com git_protocol https ✓ Configured git protocol ✓ Logged in as teknocat
Enter キーを押すと処理が完了します。
gh auth status
でログイン状況を確認してみます。
% gh auth status github.com ✓ Logged in to github.com as teknocat (/Users/********/.config/gh/hosts.yml) ✓ Git operations for github.com configured to use https protocol. ✓ Token: *******************
ログインできているようです。
使ってみる
issue の取得
いつものリポジトリの作業ディレクトリ上で、issue リストを取得してみます。
gh issue list There are no open issues in teknocat/veevalidate-test
issue が無くて参考にならないので、業務で使っているリポジトリ上で実行した例を貼っておきます。
ラベルやマイルストーンなど、Webブラウザ上と同様のフィルタが掛けられます。
% gh issue list -l "bug" % gh issue list --milestone "v1.0.0"
また、issue の内容も取得出来ます。
コメントも含めて出てきますし、--comments
オプションつけなければ最新コメントのみ出力されるなど、色々と気配りされているなと感じます。
PR 一覧の取得
PR も issue と同様に取得可能です。
ブランチ名も同時に出てくれるのがいい感じです。
最新リリースの取得
最新リリース何だったかな、という時もコマンド一つなので便利。
ワークフローの実行
ワークフローを実行することも可能です。
特定リポジトリを特定環境にデプロイするワークフローを必要に応じて手動実行しているのですが、CLI 上で出来るので便利になりそうです。
最後に
主に情報取得系の例を紹介しましたが、更新操作系のコマンドも多く用意されています。 ただ、Web ブラウザの UI から実行することで挙動を把握している部分もあるので、CLI で実行するのは少し怖い感じがあります。 この辺りは、今後利用するユースケースが見つかったら試してみたいと思います。
あと、プロジェクト関係の機能が残念ながら無いようです。 プロジェクトの状態取得や issue への割り当てが CLI で出来ると便利だと思ったのですが…。
ただ、gh api
で任意の API を発行出来るので、以下の API を叩けば生情報なら取れるかもしれません。
機会があれば試してみたいと思います。