Чтобы добавить вебхук во все репозитории GitHub, вы можете использовать различные методы и API, предоставляемые GitHub. Вот несколько подходов с примерами кода:
-
API GitHub с токеном личного доступа (PAT):
import requests token = "YOUR_PERSONAL_ACCESS_TOKEN" # Get a list of repositories headers = {"Authorization": f"Bearer {token}"} response = requests.get("https://api.github.com/user/repos", headers=headers) repos = response.json() # Add webhook to each repository webhook_url = "https://example.com/webhook" # Replace with your webhook URL for repo in repos: repo_name = repo["full_name"] webhook_data = { "name": "web", "active": True, "events": ["push"], "config": { "url": webhook_url, "content_type": "json" } } response = requests.post(f"https://api.github.com/repos/{repo_name}/hooks", headers=headers, json=webhook_data) if response.status_code == 201: print(f"Webhook added to {repo_name}") else: print(f"Failed to add webhook to {repo_name}")
-
GitHub CLI (интерфейс командной строки):
установите GitHub CLI и выполните аутентификацию с помощью своей учетной записи GitHub.gh auth login
Используйте следующую команду, чтобы добавить вебхук во все репозитории:
gh api /user/repos --jq '.[].full_name' | xargs -I {} gh api repos/{}/hooks -X POST -F name=web -F active=true -F events[]=push -F config.url=https://example.com/webhook
- Вебхуки организации GitHub.
Если у вас есть организация и вы хотите добавить вебхуки во все репозитории внутри организации, вы можете использовать API вебхуков организации GitHub. Вот пример использования GitHub API с PAT:import requests token = "YOUR_PERSONAL_ACCESS_TOKEN" organization = "YOUR_ORGANIZATION_NAME" webhook_url = "https://example.com/webhook" # Replace with your webhook URL # Get a list of repositories within the organization headers = {"Authorization": f"Bearer {token}"} response = requests.get(f"https://api.github.com/orgs/{organization}/repos", headers=headers) repos = response.json() # Add webhook to each repository for repo in repos: repo_name = repo["name"] webhook_data = { "name": "web", "active": True, "events": ["push"], "config": { "url": webhook_url, "content_type": "json" } } response = requests.post(f"https://api.github.com/repos/{organization}/{repo_name}/hooks", headers=headers, json=webhook_data) if response.status_code == 201: print(f"Webhook added to {repo_name}") else: print(f"Failed to add webhook to {repo_name}")