Closed9
githubのPRが出ているブランチ一覧を抽出したい
github API使えばできそう
アクセストークンの発行
-
https://github.com/settings/tokens/new
- Setting > Developer settings > Personal access tokens > Generate new token
- repo 権限がほしいのでチェックしておく
疎通確認
gh:e
-
curl -u username:token https://hostname/api/v3/user
github.com
-
curl -u username:token https://api.github.com/user
PR一覧取得
- 環境ごとに接続先 (
BASE
) を以下に設定- gh:e :
https://hostname/api/v3/
- github.com :
https://api.github.com/
- gh:e :
-
curl -u username:token BASE/repos/{owner}/{repo}/pulls
ref: https://docs.github.com/en/rest/reference/pulls#list-pull-requests
ちょっとつまづきポイント
パラメータ付与してcurl叩いたら怒られた。zshが誤解したっぽいので " "
で括ると良き
$ curl -u username:token BASE/repos/{owner}/{repo}/pulls?per_page=1
zsh: no matches found: BASE/repos/{owner}/{repo}/pulls?per_page=1
$ curl -u username:token "BASE/repos/{owner}/{repo}/pulls?per_page=1"
200 OK (実際はjsonが出力される)
一旦解決
curl -u username:token "BASE/repos/{owner}/{repo}/pulls" | jq ".[].head.ref"
"hoge"
"fuga"
...
これで取得できる。
残件
- 出力のダブルクォーテーション
""
が邪魔なので取り払う - 複数ページ (100件以上) ある場合に複数クエリ投げるワンライナーがほしい
- 出力のダブルクォーテーション "" が邪魔なので取り払う
jq
コマンドの -r
オプション使う
| - 複数ページ (100件以上) ある場合に複数クエリ投げるワンライナーがほしい
良い方法が思い浮かばなかったので一旦 seq 5
とかで適当回数ぶん回しておく
(実際にPR数確認してから回したほうが良さげ)
あとデフォルトの1ページあたりの件数が30件なので、maxの100件まで増やした
最終的なスクリプト
seq 5 | xargs =I {} curl -u username:token "BASE/repos/{owner}/{repo}/pulls?per_page=100&page={}" | jq -r ".[].head.ref"
このスクラップは2021/05/12にクローズされました