GitHubはGitのコードホスティングサービス。
フォーク用のorganizationアカウントを使っている。最近自動fetchをするようにしたところ、GitHub Actionsの失敗通知が非常にうるさい。トークンなどが入ってないとエラーになるジョブが多くあるようだ。並列 + 長時間でいくつも実行するので、数が多い。1つのリポジトリを1日放置で200件くらい来る。メールは設定項目があるし無視すればいいのだが、自作した通知ツールの動作が阻害されてしまうのが問題だった。workflowの失敗もnotificationなので、それだけでページを埋め尽くしてしまう。そんなに大量のページをたどる設定になっていない。
ユーザ所有のリポジトリについてはブラウザでリスト表示して設定できるようだ[fn:1]。しかしorganizationのリポジトリは一覧設定に出てこない。設定がないようだ。1件1件開いて、watchingをignoreにするしかない。なので、コマンドでやることにした。
watching状態の変更エンドポイントの説明はWatch中 - GitHub Docsにある。
[fn:1]それでも400件は大変だ。
curl -L \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/orgs/kd-collective/repos?per_page=100&page=1" | \
jq .[].name | \
xargs -i -n 1 curl -L -X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/kd-collective/{}/subscription \
-d '{"subscribed":false,"ignored":true}'
organizationのリポジトリを一覧してから、順にignoreを実行していく。
GitHub Readmeでの、画像の揃え方。理解しやすい。
.github/CODEOWNERSファイルを配置すると、特定のパターンで特定の人にレビュー必須にできる。 例えば.rbの変更が含まれていた場合は@backend-team、.tsの場合は@Aさん、など。
DockerHubのように、Dockerコンテナをホストするサービスとして利用できる。
- GitHubトークンを発行する
- シェル上でログインする
- タグをつけてビルドする
- pushする
リポジトリ内にライブラリなどが入っていると、GitHub上で意図しない言語のリポジトリとみなされることがある。
.gitattributes
ファイルを作って↓のように入力すると、public内のファイルが言語統計から無視される。
public/* linguist-vendored public/*/* linguist-vendoredGitHubでのメタツールの作り方を解説している。
- 条件付きリクエストはレートを消費しない。変更がない場合は何も返さない
有名なGitHubプロジェクトの可視化。
バッジの作り方を見る。
GitHubのドキュメント。
不便なので。GitHub CLI で fork を最新にするを参考にして作成した。
フォークリポジトリはorganizationにまとめている。
gh auth refresh -s workflow # workflowの変更があると、この操作が必要と出る
gh repo list kd-collective --limit 1000 --fork --json nameWithOwner --jq '.[].nameWithOwner' | xargs -n1 gh repo sync
- GitHub Actionsで定期実行したい
- kijimaD/ghfetcherで定期実行するようにした
- すべてのリポジトリをgit pullしたい
- kijimaD/gcloneをpullに対応させた