Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

Коннектор GitHub

Статус коннектора: Запланирован Ещё не создан. Сегодня Tajo не запускает этот коннектор.

Иллюстрация · пример данных

Пример синхронизации

Проверьте одну запись

Источник

GitHub

Статус коннектора: Запланирован

Назначение

Ваш другой инструмент

Статус коннектора: Свой инструмент

Поле источникаПоле назначенияПример значения
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Черновик
  2. Проверьте одну запись
  3. Одобрить эту версию

Статусы относятся к отдельным коннекторам и не гарантируют, что эта синхронизация готова. Поля приведены для примера. Перед запуском синхронизации проверьте реальную схему и разрешения.

Подключите ваши репозитории GitHub к Brevo для отслеживания вовлечённости разработчиков, workflow уведомлений о релизах и мониторинга активности сообщества через Tajo.

Обзор

СвойствоЗначение
ПлатформаGitHub
КатегорияCustom
Сложность настройкиУмеренная
Официальная интеграцияНет
Синхронизируемые данныеСобытия, пользователи, репозитории
Тип APIREST API, GraphQL API
АутентификацияGitHub App / Personal Access Token / OAuth 2.0
Базовый URLhttps://api.github.com
Версия API2022-11-28 (версионирование на уровне заголовков)

Возможности

  • Отслеживание issue и PR, синхронизируйте события issue и pull request в таймлайны контактов Brevo
  • Уведомления о релизах, запускайте кампании Brevo при новых релизах репозитория
  • Синхронизация контрибьюторов, сопоставляйте контрибьюторов GitHub с контактами Brevo для вовлечения сообщества
  • Отслеживание star и fork, отслеживайте метрики популярности репозитория
  • Пересылка событий вебхуков, пересылайте события GitHub в автоматизации Brevo
  • Каталог репозиториев, синхронизируйте метаданные репозиториев как элементы каталога Brevo

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Аккаунт GitHub с доступом к целевым репозиториям
  2. GitHub App или Personal Access Token (рекомендуется fine-grained)
  3. Права администратора репозиториев для настройки вебхуков
  4. Аккаунт Brevo с доступом к API
  5. Аккаунт Tajo с активной подпиской

Аутентификация

GitHub поддерживает несколько методов аутентификации. Tajo рекомендует использовать GitHub Apps для доступа на уровне организации.

Вариант 1: GitHub App (рекомендуется)

  1. Перейдите в Settings > Developer settings > GitHub Apps
  2. Нажмите New GitHub App
  3. Настройте приложение с этими разрешениями:
Repository permissions:
Issues: Read
Pull requests: Read
Contents: Read
Metadata: Read
Organization permissions:
Members: Read
Subscribe to events:
Issues
Pull request
Push
Release
Star
Fork

Вариант 2: Fine-Grained Personal Access Token

  1. Перейдите в Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Нажмите Generate new token
  3. Выберите целевые репозитории
  4. Предоставьте эти разрешения:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Безопасность токенов

Fine-grained токены имеют срок действия. Настройте ротацию токенов до истечения срока. Installation-токены GitHub App автоматически обновляются и предпочтительнее для продакшена.

Подключение к Tajo

Terminal window
# Using GitHub App
tajo connectors install github \
--app-id $GITHUB_APP_ID \
--private-key-path ./github-app-key.pem \
--installation-id $GITHUB_INSTALLATION_ID
# Using Personal Access Token
tajo connectors install github \
--token $GITHUB_TOKEN

Конфигурация

Базовая настройка

connectors:
github:
enabled: true
auth_type: "github_app" # or "token"
repositories:
- owner/repo-1
- owner/repo-2
sync:
issues: true
pull_requests: true
releases: true
contributors: true
stars: true
lists:
contributors: 20
stargazers: 21

Сопоставление полей

Сопоставьте данные пользователя GitHub с атрибутами контакта Brevo:

field_mapping:
# Standard fields
login: GITHUB_USERNAME
email: email
name: FIRSTNAME
# Developer metrics
contributions: GITHUB_CONTRIBUTIONS
repositories_count: GITHUB_REPOS
followers: GITHUB_FOLLOWERS
created_at: GITHUB_JOINED
# Custom attributes
company: COMPANY
location: LOCATION
bio: GITHUB_BIO

Эндпоинты API

Tajo интегрируется со следующими эндпоинтами GitHub REST API:

ЭндпоинтМетодНазначение
/repos/{owner}/{repo}/issuesGETСписок issues репозитория
/repos/{owner}/{repo}/pullsGETСписок pull request
/repos/{owner}/{repo}/releasesGETСписок релизов
/repos/{owner}/{repo}/contributorsGETСписок контрибьюторов
/repos/{owner}/{repo}/stargazersGETСписок stargazer
/repos/{owner}/{repo}/forksGETСписок форков
/repos/{owner}/{repo}/eventsGETСписок событий репозитория
/users/{username}GETПолучить профиль пользователя
/orgs/{org}/membersGETСписок участников организации
/repos/{owner}/{repo}/hooksPOSTСоздать вебхук

Примеры кода

Инициализация коннектора

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('github', {
appId: process.env.GITHUB_APP_ID,
privateKey: process.env.GITHUB_PRIVATE_KEY,
installationId: process.env.GITHUB_INSTALLATION_ID
});

Синхронизация контрибьюторов в Brevo

await tajo.connectors.sync('github', {
type: 'full',
resources: ['contributors'],
repositories: ['owner/repo-1', 'owner/repo-2']
});
const status = await tajo.connectors.status('github');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T11:00:00Z',
// contributorsCount: 245,
// issuesTracked: 1890,
// releasesTracked: 34
// }

Обработка событий вебхуков

app.post('/webhooks/github', async (req, res) => {
const signature = req.get('X-Hub-Signature-256');
const event = req.get('X-GitHub-Event');
// Verify webhook signature
if (!verifyGitHubSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
await tajo.connectors.handleWebhook('github', {
event,
payload: req.body
});
res.status(200).send('OK');
});

Запуск кампании релиза

// Listen for new releases and trigger Brevo campaign
tajo.connectors.on('github', 'release.published', async (event) => {
await tajo.campaigns.trigger('release-announcement', {
listId: 21,
params: {
version: event.release.tag_name,
release_notes: event.release.body,
download_url: event.release.html_url
}
});
});

Ограничения скорости

GitHub применяет лимиты запросов в зависимости от метода аутентификации:

АутентификацияОсновной лимитSearch API
Без аутентификации60 запросов/час10 запросов/мин
Personal Access Token5 000 запросов/час30 запросов/мин
GitHub App (installation)5 000 запросов/час30 запросов/мин
GitHub App (user-to-server)5 000 запросов/час30 запросов/мин

Условные запросы

Tajo использует условные запросы (заголовки If-None-Match / If-Modified-Since) для снижения потребления API. Ответы с 304 Not Modified не учитываются в лимитах.

Дополнительные ограничения:

  • Вторичные лимиты: не более 100 параллельных запросов. Не более 900 очков в минуту для эндпоинтов REST API.
  • GraphQL: 5 000 очков в час (стоимость запроса зависит от сложности).

Устранение неполадок

Частые проблемы

ПроблемаПричинаРешение
401 UnauthorizedИстёкший токен или неверные учётные данныеПерегенерируйте токен или переустановите GitHub App
403 ForbiddenНедостаточные разрешенияПроверьте scope токена или разрешения App
404 Not FoundПриватный репозиторий без доступаПредоставьте доступ к репозиторию токену или App
Превышен лимит запросовСлишком много API-вызововВключите условные запросы и уменьшите частоту синхронизации
Вебхуки не приходятНеверный URL или файрволПроверьте, что URL вебхука публично доступен

Режим отладки

connectors:
github:
debug: true
log_level: verbose
log_webhooks: true

Проверка подключения

Terminal window
tajo connectors test github
# ✓ API authentication successful
# ✓ Repository access verified
# ✓ Issue data readable
# ✓ Webhook delivery active
# ✓ Rate limit healthy (4,850/5,000 remaining)

Лучшие практики

  1. Используйте GitHub Apps вместо PAT, GitHub Apps предоставляют детальные разрешения и автоматически обновляющиеся токены
  2. Включайте секреты вебхуков, всегда проверяйте подписи вебхуков с HMAC-SHA256
  3. Используйте условные запросы, используйте ETag, чтобы не тратить квоту лимитов
  4. Пагинируйте большие ответы, GitHub возвращает максимум 100 элементов на страницу; итерируйте с заголовками Link
  5. Синхронизируйте в период низкой активности, планируйте полные синхронизации вне пиковых часов разработки
  6. Отслеживайте заголовки лимитов, проверяйте X-RateLimit-Remaining, чтобы проактивно ограничивать нагрузку

Безопасность

  • Аутентификация GitHub App, JWT на основе RSA-ключей с короткоживущими installation-токенами
  • Подписи вебхуков, проверка HMAC-SHA256 для всех payload вебхуков
  • Fine-grained токены, ограничены конкретными репозиториями и разрешениями
  • Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
  • Зашифрованное хранилище, приватные ключи и токены зашифрованы в покое в Tajo
  • Истечение токенов, fine-grained токены автоматически истекают; настройте уведомления о ротации

Связанные ресурсы

Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

AI-ассистент

Привет! Спрашивайте меня о документации.

Эта страница в Markdown: github.md

Загрузка Markdown…
Открыть в Claude Открыть в ChatGPT