ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ основному ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ

Подписка Π½Π° всС свои Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ: Π½ΠΎΡ‡Π½ΠΎΠΉ workflow вмСсто Π³Π°Π»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚

19 October 2026

О Π½ΠΎΠ²ΠΎΠΌ issue ΠΈΠ»ΠΈ PR Π² своём Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub сообщаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π° этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ подписаны (watch). БСгодня Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ мСня подписки Π½Π΅Ρ‚ Π½Π° Π΄ΠΎΠ±Ρ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π². Π‘Π°ΠΌΡ‹ΠΉ свСТий, juev/brook, создан Π² 13:34, ΠΈ Π½Π° запрос подписки API ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» 404. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠ³ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΌ issue, Π° я Π±Ρ‹ ΡƒΠ·Π½Π°Π» ΠΎΠ± этом случайно.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

ДокумСнтация GitHub ΠΎΠ±Π΅Ρ‰Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ подписка появляСтся сама: Β«By default, you also automatically watch all repositories that you create and are owned by your personal accountΒ», ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ β€” Β«You can also choose to automatically watch all repositories that you have push access to, except forksΒ»1. Π’Π°ΠΌ ΠΆΠ΅ сказано, Ρ‡Ρ‚ΠΎ это настраиваСтся Π² увСдомлСниях. На страницС настроСк ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΎΠΉ Π³Π°Π»ΠΎΡ‡ΠΊΠΈ я Π½Π΅ Π½Π°ΡˆΡ‘Π», Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ настройкС ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎ автоподписку Π½Π΅Ρ‚ Π½ΠΈ слова2.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎ API ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ автоподписка Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Из пяти самых Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² подписки Π½Π΅ Π±Ρ‹Π»ΠΎ Ρƒ brook (создан сСгодня) ΠΈ Ρƒ claude (Ρ„Π΅Π²Ρ€Π°Π»ΡŒ). Π£ memcue подписка Π±Ρ‹Π»Π°, Π½ΠΎ появилась Ρ‡Π΅Ρ€Π΅Π· 44 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ послС создания рСпозитория, скорСС всСго, я поставил Π΅Ρ‘ Ρ€ΡƒΠΊΠ°ΠΌΠΈ.

Массовой подписки Π² интСрфСйсС Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚. На страницС https://github.com/watching ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ массово ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ.

КакиС Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹

Π ΡƒΠΊΠ°ΠΌΠΈ. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Watch β†’ All Activity. Π£ мСня 89 своих Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π±Π΅Π· Ρ„ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Ρ…, ΠΈ ΠΏΡ€ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ придётся ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Ρ€ΠΎΠ²Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ сработало.

Π Π°Π·ΠΎΠ²Ρ‹ΠΉ скрипт. Π£ REST API Π΅ΡΡ‚ΡŒ PUT /repos/{owner}/{repo}/subscription3, ΠΈ gh позволяСт ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΈΠΌ ΠΏΠΎ всСму списку:

gh repo list --limit 1000 --json nameWithOwner -q '.[].nameWithOwner' \
  | xargs -I{} gh api -X PUT repos/{}/subscription -F subscribed=true --silent

subscribed=true соотвСтствуСт ΡƒΡ€ΠΎΠ²Π½ΡŽ Β«All activityΒ». Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Custom с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Π»Π°ΠΆΠΊΠ°ΠΌΠΈ для issues, PR ΠΈ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· этот Π²Ρ‹Π·ΠΎΠ² Π½Π΅ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΎ Π½Π΅ Π½ΠΎΠ²Ρ‹Π΅: ΠΈΡ… придётся ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ запуском, Π° ΠΏΡ€ΠΎ запуск ΠΎΠΏΡΡ‚ΡŒ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.

Π’ΠΎΡ‚ ΠΆΠ΅ скрипт ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ Ρƒ сСбя. Cron ΠΈΠ»ΠΈ systemd timer Π½Π° домашнСм сСрвСрС. Π’ΠΎΠΊΠ΅Π½ Π»Π΅ΠΆΠΈΡ‚ Π½Π° ΠΌΠΎΠ΅ΠΉ машинС, Π° Π½Π΅ Ρƒ GitHub. ΠœΠΈΠ½ΡƒΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½Π° сСрвСрС, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π΄ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ.

Π’ΠΎΡ‚ ΠΆΠ΅ скрипт ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ Π² GitHub Actions. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с workflow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π· Π² Π½ΠΎΡ‡ΡŒ свСряСт Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с подписками. Π‘Π΅Ρ€Π²Π΅Ρ€ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запуска Π²ΠΈΠ΄Π½Ρ‹ Π² Actions.

Π― Π²Ρ‹Π±Ρ€Π°Π» послСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ GitHub Actions ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

РасписаниС Π² Actions срабатываСт Π½Π΅ Ρ‡Π°Ρ‰Π΅ Ρ€Π°Π·Π° Π² ΠΏΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚, врСмя указываСтся Π² UTC. Π’ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ запуск ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Ссли 60 Π΄Π½Π΅ΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ активности4. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΎΠ΄Π½ΠΈΠΌ скриптом мСняСтся Ρ€Π΅Π΄ΠΊΠΎ, поэтому ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ‚ΠΈΡ…ΠΎ пСрСстал Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ΠžΡ‚ΡΡŽΠ΄Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ juev/watch-all.

Π£ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ рСпозитория запуски тратят ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Actions. На бСсплатном ΠΏΠ»Π°Π½Π΅ ΠΈΡ… 2000 Π² мСсяц, Π° Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… рСпозиториях Π½Π° стандартных Ρ€Π°Π½Π½Π΅Ρ€Π°Ρ… Actions бСсплатны5. Π ΡƒΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ со всСми подписками занял 31 сСкунду, Π½ΠΎΡ‡Π½ΠΎΠΉ запуск Π±Π΅Π· Π½ΠΎΠ²Ρ‹Ρ… подписок ΠΊΠΎΡ€ΠΎΡ‡Π΅. Π Π°Π· Π² Π½ΠΎΡ‡ΡŒ β€” это ΠΎΠΊΠΎΠ»ΠΎ 30 запусков Π² мСсяц, Π΄ΠΎ Π»ΠΈΠΌΠΈΡ‚Π° Π΄Π°Π»Π΅ΠΊΠΎ. Π§Π°Ρ‰Π΅ я Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ стал: Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ подписку Π½Π΅ ΠΏΠΎΠ·ΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π½ΠΎΡ‡ΠΈ, этого Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚.

РасписаниС Π²Ρ‹Π±Ρ€Π°Π½ΠΎ Π½Π΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ часа. ДокумСнтация ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ schedule задСрТиваСтся, Π° Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС задания ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΏΠΈΠΊ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ приходится Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ часа4.

Какой Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠΊΠ΅Π½

Π­Ρ‚ΠΎ самая нСочСвидная Ρ‡Π°ΡΡ‚ΡŒ.

  • GITHUB_TOKEN Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Он выдаётся workflow Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π° подписка ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ.
  • Fine-grained PAT Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Π’ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Β«WatchingΒ» пСрСчислСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ GET /user/subscriptions ΠΈ GET /users/{username}/subscriptions, ΠΎΠ±Π° Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅6. PUT /repos/{owner}/{repo}/subscription Π² спискС Π½Π΅Ρ‚.
  • ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ classic PAT со scope notifications ΠΈ repo. notifications Π½ΡƒΠΆΠ΅Π½ для записи подписки, repo Π½ΡƒΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Мой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ gh Ρ‚ΠΎΠΆΠ΅ Π½Π΅ годится: Ρƒ Π½Π΅Π³ΠΎ scope admin:public_key, gist, read:org ΠΈ repo, Π±Π΅Π· notifications. На запрос подписки ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ 404, ΠΈ gh сам подсказываСт, Ρ‡Π΅Π³ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚:

gh: This API operation needs the "notifications" scope. To request it, run:  gh auth refresh -h github.com -s notifications

Π’ΠΎΠΊΠ΅Π½ выпускаСтся Ρ‚Π°ΠΊ:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ https://github.com/settings/tokens/new?scopes=repo,notifications&description=watch-all . Π­Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° classic PAT, scope Π² Π½Π΅ΠΉ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ срок дСйствия.
  3. НаТмитС Β«Generate tokenΒ» ΠΈ скопируйтС Ρ‚ΠΎΠΊΠ΅Π½.
  4. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² сСкрСт рСпозитория ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ gh secret set WATCH_TOKEN -R juev/watch-all. Команда попросит Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½.

Π­Ρ‚ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Ρ‚ΠΎΠΊΠ΅Π½: repo Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСм ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ рСпозиториям. Π›Π΅ΠΆΠΈΡ‚ ΠΎΠ½ Π² сСкрСтах ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ рСпозитория, ΠΈ workflow ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ скрипту. Когда срок дСйствия истСчёт, Π½ΠΎΡ‡Π½ΠΎΠΉ запуск Π½Π°Ρ‡Π½Ρ‘Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ, ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

Как устроСн скрипт

Π‘ΠΊΡ€ΠΈΠΏΡ‚ watch-all.sh подписываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ подписки Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚:

gh api --paginate 'user/repos?affiliation=owner&per_page=100' \
  -q '.[] | select((.archived or .fork) | not) | .full_name' | sort -u > "$work/owned"
gh api --paginate 'user/subscriptions?per_page=100' \
  -q '.[].full_name' | sort -u > "$work/watched"
{ grep -v -e '^#' -e '^[[:space:]]*$' "$here/exclude.txt" 2>/dev/null || true; } \
  | sort -u > "$work/excluded"

comm -23 "$work/owned" "$work/watched" | comm -23 - "$work/excluded" > "$work/missing"

while read -r repo; do
  if (( dry_run )); then
    echo "would watch $repo"
  else
    gh api -X PUT "repos/$repo/subscription" -F subscribed=true -F ignored=false --silent
    echo "watched $repo"
  fi
done < "$work/missing"

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Ρ‚Π°ΠΊΠΎΠΉ:

  1. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π±Π΅Ρ€Ρ‘Ρ‚ ΠΌΠΎΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±Π΅Π· Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Ρ… ΠΈ Π±Π΅Π· Ρ„ΠΎΡ€ΠΊΠΎΠ².
  2. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π±Π΅Ρ€Ρ‘Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ подписки.
  3. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ подписки ΠΈ exclude.txt.
  4. На ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ скрипт ставит подписку.

Запросов Π½Π° запись получаСтся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, сколько появилось Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π° Π½Π΅ 89 ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ. Π‘ Ρ„Π»Π°Π³ΠΎΠΌ --dry-run скрипт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚, Π½Π° Ρ‡Ρ‚ΠΎ подписался Π±Ρ‹.

Π€Π°ΠΉΠ» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ·-Π·Π° ΠΎΠ΄Π½ΠΎΠΉ особСнности. PUT с subscribed=true снимаСт ΠΈ Ρ€ΡƒΡ‡Π½ΡƒΡŽ отписку, ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ignore. Если я ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΠΈΡˆΡƒΡΡŒ ΠΎΡ‚ рСпозитория, Π½ΠΎΡ‡Π½ΠΎΠΉ запуск ΠΏΠΎΠ΄ΠΏΠΈΡˆΠ΅Ρ‚ мСня ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² exclude.txt.

Π€ΠΎΡ€ΠΊΠΈ я ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ» послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ dry-run: срСди 53 ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ² ΠΈΡ… оказалось 14, ΠΈ увСдомлСния ΠΎΡ‚ Π½ΠΈΡ… ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

Workflow ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ:

name: watch-all

on:
  schedule:
    - cron: '17 0 * * *' # 03:17 MSK
  workflow_dispatch:

permissions:
  contents: read

jobs:
  watch:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v5
      - run: ./watch-all.sh
        env:
          GH_TOKEN: ${{ secrets.WATCH_TOKEN }}

workflow_dispatch позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, Π½Π΅ доТидаясь Π½ΠΎΡ‡ΠΈ. gh Π½Π° Ρ€Π°Π½Π½Π΅Ρ€Π΅ GitHub ΡƒΠΆΠ΅ установлСн ΠΈ Π±Π΅Ρ€Ρ‘Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· GH_TOKEN.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запуск я сдСлал Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π½Π°ΡˆΡ‘Π» 89 своих Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π±Π΅Π· Ρ„ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Ρ…, подписки Π½Π΅ Π±Ρ‹Π»ΠΎ Ρƒ 39 ΠΈΠ· Π½ΠΈΡ…, Π² Ρ‚ΠΎΠΌ числС Ρƒ brook, claude ΠΈ Ρƒ самого watch-all. ВсС 39 ΠΎΠ½ подписал Π·Π° 31 сСкунду. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ dry-run послС этого ΠΏΠΎΠΊΠ°Π·Π°Π» to watch: 0, Π° API для juev/brook ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΎ "subscribed": true.

ВсСго подписок Ρƒ мСня Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ 144, большС 89. Π Π°Π·Π½ΠΈΡ†Π° β€” подписки Π½Π° Ρ„ΠΎΡ€ΠΊΠΈ, Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ ΠΈ Ρ‡ΡƒΠΆΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈΡ… Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Π΅Ρ‚: ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ добавляСт подписки, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π½Π΅ снимаСт.

Π”Π°Π»ΡŒΡˆΠ΅ workflow запускаСтся ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ Π² 03:17 ΠΏΠΎ МосквС, ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ подписку Π½Π΅ ΠΏΠΎΠ·ΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΡƒΡ‚Ρ€Π°.


  1. About notifications , Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ подписку. ↩︎

  2. Configuring notifications . ↩︎

  3. REST API: Watching , ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Β«Set a repository subscriptionΒ» ΠΈ Β«List repositories watched by the authenticated userΒ». ↩︎

  4. Events that trigger workflows , Ρ€Π°Π·Π΄Π΅Π» schedule. ↩︎ ↩︎

  5. GitHub Actions billing , Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… ΠΌΠΈΠ½ΡƒΡ‚. ↩︎

  6. Permissions required for fine-grained personal access tokens , Ρ€Π°Π·Π΄Π΅Π» Β«User permissions for “Watching”Β». ↩︎