【Github】GitHub CLI ~ 入門編 ~

■ はじめに

Github Actions を調べている時に、

https://dk521123.hatenablog.com/entry/2024/01/28/004128

において、workflow_dispatchで手動実行しようとした際に
デフォルトブランチではないと、Githubの画面上に実行ボタンが出てこない
という問題があるので、その際の解決策として
GitHub CLI なるもので実行すればいいとのことがあったので、調べてみる。

目次

【1】GitHub CLI
【2】GitHub CLIで出来ること
【3】インストール
 1)Linux
 2)Windows
【4】Github CLI
 1)認証関連
 2)ワークフロー実行
【5】コマンド例

【1】GitHub CLI

* GitHub の操作するためのCLI(Command Line Interface)
 => gh コマンドで操作

【2】GitHub CLIで出来ること

https://docs.github.com/ja/github-cli/github-cli/about-github-cli

より抜粋

* リポジトリの表示、作成、複製、フォーク
* Issue と pull request の作成、クローズ、編集、一覧表示
* プルリクエストのレビュー、diff、マージ
* ワークフローの実行、表示、一覧表示
* リリースの作成、一覧表示、表示、削除
* gist の作成、編集、一覧表示、表示、削除
* codespace の一覧表示、作成、削除、接続
* GitHub API から情報を取得します

【3】インストール

https://github.com/cli/cli#installation

に記載されている。

1)Linux

[a] Debian
https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt

(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y

# 確認
gh --version

# gh version 2.48.0 (2024-04-17)
# https://github.com/cli/cli/releases/tag/v2.48.0

# To Uninstall
# sudo apt remove gh

[b] Redhut系

sudo yum install -y https://github.com/cli/cli/releases/download/v2.44.1/gh_2.44.1_linux_386.rpm

2)Windows

https://github.com/cli/cli?tab=readme-ov-file#windows

# winget が入っているか確認
$ winget --version
v1.7.10661

$ winget install --id GitHub.cli

【4】Github CLI

GitHub CLI manual
https://cli.github.com/manual/
GitHub CLI 一覧
https://cli.github.com/manual/gh

1)認証関連

* gh auth で実行

https://cli.github.com/manual/gh_auth

2)ワークフロー実行

* gh workflow run で実行

https://cli.github.com/manual/gh_workflow_run

構文

gh workflow run [<workflow-id> | <workflow-name>] \
  -f [引数] --repo [リポジトリ名] --ref [ブランチ名]

【5】コマンド例

# [1] ログイン
$ 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? Paste an authentication token
Tip: you can generate a Personal Access Token here https://github.com/settings/tokens
The minimum required scopes are 'repo', 'read:org', 'workflow'.
? Paste your authentication token: ****....

# [2] ワークフロー一覧表示
$ gh workflow list --repo dk521123/github-actions-demo

# [3] ワークフローの実行
 gh workflow run workflow1.yml -f demoInputValue=Hello --repo dk521123/github-actions-demo

# [3]' 複数引数がある場合
echo '{"env":"prod", "demoInputValue":"Hello"}' | gh workflow run workflow1.yml --repo dk521123/github-actions-demo --json

参考文献

https://zenn.dev/snowcait/articles/0e430af5fb1e50

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ ワークフロー制御 ~
https://dk521123.hatenablog.com/entry/2024/01/28/004128
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
Github Actions ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/12/21/155224
Github Actions ~ エラー処理 ~
https://dk521123.hatenablog.com/entry/2024/01/01/232057
Github Actions ~ GITHUB_ENV ~
https://dk521123.hatenablog.com/entry/2023/12/29/000840
Github Actions ~ GITHUB_OUTPUT ~
https://dk521123.hatenablog.com/entry/2024/01/30/002943
Github Actions ~ Artifact ~
https://dk521123.hatenablog.com/entry/2024/02/13/021717
Github Actions ~ Self-hosted runners / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119
Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736