GitHub
Memo
一括でリポジトリのwatch状態を変更する
フォーク用のorganizationアカウントを使っている。最近自動fetchをするようにしたところ、GitHub Actionsの失敗通知が非常にうるさい。トークンなどが入ってないとエラーになるジョブが多くあるようだ。並列 + 長時間でいくつも実行するので、数が多い。1つのリポジトリを1日放置で200件くらい来る。
メールは設定項目があるし無視すればいいのだが、自作した通知ツールの動作が阻害されてしまうのが問題だった。workflowの失敗もnotificationなので、それだけでページを埋め尽くしてしまう。そんなに大量のページをたどる設定になっていない。
ユーザ所有のリポジトリについてはブラウザでリスト表示して設定できるようだ1。しかしorganizationのリポジトリは一覧設定に出てこない。設定がないようだ。1件1件開いて、watchingをignoreにするしかない。なので、コマンドでやることにした。
watching状態の変更エンドポイントの説明はWatch中 - GitHub Docsにある。
Readmeでの画像の揃え方
GitHub Readmeでの、画像の揃え方。理解しやすい。
CODEOWNERS
.github/CODEOWNERSファイルを配置すると、特定のパターンで特定の人にレビュー必須にできる。 例えば.rbの変更が含まれていた場合は@backend-team、.tsの場合は@Aさん、など。
コンテナレジストリ
DockerHubのように、Dockerコンテナをホストするサービスとして利用できる。
- GitHubトークンを発行する
- シェル上でログインする
- タグをつけてビルドする
- pushする
リポジトリで特定の言語をignoreするとき
リポジトリ内にライブラリなどが入っていると、GitHub上で意図しない言語のリポジトリとみなされることがある。
.gitattributes
ファイルを作って↓のように入力すると、public内のファイルが言語統計から無視される。
public/* linguist-vendored public/*/* linguist-vendored
Tasks
TODO O’Reilly Japan - GitHubツールビルディング
GitHubでのメタツールの作り方を解説している。
- 条件付きリクエストはレートを消費しない。変更がない場合は何も返さない
Reference
Map of GitHub
有名なGitHubプロジェクトの可視化。
eggplants/ghcr-badge: Generate ghcr.io (GitHub Container Registory) container’s status badge
バッジの作り方を見る。
GitHub Documentation
GitHubのドキュメント。
Archives
DONE フォークしたリポジトリを一括更新する
不便なので。
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に対応させた
Footnotes:
それでも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を実行していく。