GitHub
Renta выгружает данные GitHub в ваше хранилище: коммиты, задачи, пул-реквесты, релизы, запуски GitHub Actions и другие объекты репозиториев.
Репозитории и набор полей каждого объекта вы выбираете сами.
Аутентификация
Renta подключается к GitHub через OAuth. Вы входите в GitHub, подтверждаете запрошенный доступ и возвращаетесь в Renta. Создавать персональный токен не нужно.
На экране подтверждения GitHub запрашивает доступ, который покрывает всё, что Renta умеет выгружать:
- Репозитории.
Код, ветки, коммиты, задачи и пул-реквесты, включая приватные репозитории. - GitHub Actions.
Воркфлоу, их запуски и задачи. - Организация.
Команды и их участники. - Профиль.
Логин и почта подключаемого аккаунта.
У доступа к репозиториям и воркфлоу в GitHub нет варианта только для чтения, поэтому на экране подтверждения упоминается запись. Renta только читает данные.
Пайплайн видит те же репозитории, что и а вторизованный аккаунт. Если организация ограничивает OAuth-приложения, её репозитории появятся в Renta только после того, как владелец одобрит приложение в настройках организации Third-party Access.
Подключение источника GitHub
Выполните эти шаги, чтобы добавить GitHub как источник в Renta, авторизовав доступ к аккаунту GitHub.
- Перейдите в раздел Connections > Catalog в левом меню.
- Откройте категорию Developer tools и нажмите на карточку GitHub.

Нажмите Log in to your GitHub account. Renta перенаправит вас в GitHub, где нужно войти в аккаунт и подтвердить запрошенный доступ. Если в браузере уже есть авторизованная сессия GitHub, подтверждение произойдёт сразу и вы вернётесь в Renta.

Завершите настройку:
- Source name.
Укажите имя источника данных. Оно используется только в интерфейсе Renta. - Access granted.
Проверьте, что аккаунт подключён. На карточке указан логин авторизованного аккаунта GitHub.
Нажмите Save, чтобы завершить.
Если авторизация изменится, например вы отзовёте приложение в GitHub, нажмите Re-authorize на этом источнике. Подключение обновится на месте, и все построенные на нём пайплайны продолжат работать.

Новый источник появится в списке Sources в статусе Active. Теперь его можно использовать в пайплайнах.

Создание пайплайна
Когда источник подключён, создайте пайплайн, чтобы си нхронизировать данные GitHub с вашим назначением.
Создание пайплайна GitHub
Свяжите источник GitHub с назначением и настройте пайплайн.
В левом меню нажмите New pipeline. На шаге Source выберите GitHub в блоке Already connected и нажмите Next step.

Выберите созданное ранее подключение GitHub и нажмите Next step. На карточке указан аккаунт подключения и дата его добавления.

На шаге Destination выберите назначение (например, Google BigQuery) и нажмите Next step.

Выберите подключение назначения, куда загружать данные, и нажмите Next step. На карточке указаны датасет и проект, в которые попадут данные.

Настройка пайплайна
На последнем шаге выберите, какие данные GitHub выгружать, из каких репозиториев и как часто Renta будет их загружать.
Тип интеграции
Выберите, как настроить пайплайн: собрать отчёт самостоятельно или взять готовый шаблон.

| Тип интеграции | Описание |
|---|---|
| Custom report | Вы сами выбираете тип отчёта, репозитории, поля и настройки загрузки. Разделы ниже описывают этот путь. |
| Pre-built templates | Набор типов отчётов, в котором уже выбраны все поля. Вы указываете только шаблон и репозитории. |
Шаблон создаёт по одному пайплайну на каждый входящий в него тип отчёта, поэтому одно нажатие Create pipeline может дать больше десятка пайплайнов. Renta предлагает пять шаблонов: базовые объекты репозитория, задачи и пул-реквесты, CI/CD, организация и все объекты.
Тип отчёта
Выберите, какой объект GitHub выгружает пайплайн. Один пайплайн загружает один тип отчёта.

| Тип отчёта | Описание |
|---|---|
| Repositories | Репозитории, доступные подключённому аккаунту: имя, видимость, описание, язык, ветка по умолчанию, лицензия, права, темы и счётчики звёзд, наблюдателей, форков и открытых задач. |
| Branches | Ветки каждого репозитория с SHA последнего коммита и признаком защиты. |
| Tags | Теги с SHA помеченного коммита и ссылками на архивы. |
| Commits | История коммитов ветки по умолчанию: сообщение, SHA дерева, автор и коммиттер с именем, почтой и датой, проверка подписи и родительские коммиты. |
| Commit Comments | Комментарии к коммитам: текст, автор, путь к файлу и строка, на которую указывает комментарий, счётчики реакций. |
| Commit Check Runs | Проверки CI для коммитов: статус, результат, время начала и завершения, сводка вывода, набор проверок и приложение, которое их отправило. |
| Issues | Задачи с их статусом, заголовком, текстом, автором, исполнителем, вехой, метками, реакциями и датой закрытия. GitHub считает пул-реквест разновидностью задачи, поэтому пул-реквесты тоже попадают в этот отчёт. |
| Issue Comments | Комментарии к задачам и пул-реквестам: текст, автор, роль автора в репозитории и счётчики реакций. |
| Issue Events | Журнал изменений задач: какое событие произошло, кто его выполнил, а также метка, исполнитель, веха, переименование или запрос ревью, к которым оно относится. |
| Issue Milestones | Вехи с их статусом, описанием, датами дедлайна и закрытия, создателем и счётчиками открытых и закрытых задач. |
| Issue Labels | Определения меток репозитория: имя, цвет, описание и признак метки по умолчанию. |
| Pull Requests | Пул-реквесты с их статусом, заголовком, текстом, автором, исполнителем, вехой, метками, запрошенными ревьюерами и командами, ветками head и base, датами создания, изменения, закрытия и слияния. |
| Pull Request Commits | Коммиты, входящие в каждый пул-реквест, с теми же полями автора, коммиттера и проверки подписи, что и история коммитов. |
| Reviews | Ревью пул-реквестов: статус, текст, автор и время отправки. |
| Review Comments | Комментарии внутри ревью: текст, путь к файлу, фрагмент диффа, строка и сторона диффа, ревью и коммит, к которым относится комментарий, счётчики реакций. |
| Pull Request Stats | Пул-реквесты вместе со статистикой диффа, которую GitHub отдаёт по каждому пул-реквесту: коммиты, добавленные и удалённые строки, изменённые файлы, счётчики комментариев, состояние слияния, репозитории head и base. |
| Releases | Релизы с тегом, названием, текстом, признаками черновика и предрелиза, автором, датой публикации, приложенными файлами и реакциями. |
| Deployments | Деплои с окружением, ссылкой и SHA, задачей, описанием, создателем и полезной нагрузкой деплоя. |
| Events | События активности репозитория: тип, инициатор, организация и полезная нагрузка события. |
| Workflows | Описания воркфлоу GitHub Actions: имя, путь, состояние, даты создания и изменения. |
| Workflow Runs | Запуски воркфлоу GitHub Actions: статус, результат, событие и инициатор запуска, номер запуска и попытки, ветка и коммит head, связанные пул-реквесты. |
| Workflow Jobs | Задачи запусков воркфлоу: статус, результат, раннер, тайминги, запрошенные метки раннера и шаги, которые прошла задача. |
| Collaborators | Пользователи с доступом к репозиторию, название их роли и признаки прав pull, triage, push, maintain и admin. |
| Assignees | Пользователи, которых можно назначить на задачи и пул-реквесты: логин, тип и ссылка на профиль. |
| Teams | Команды организации, которой принадлежат выбранные репозитории: имя, слаг, описание, приватность, права и родительская команда. |
| Team Members | Состав каждой команды этой организации: логин, тип и ссылка на профиль. |
| Projects | Классические доски проектов: номер, имя, текст, состояние, видимость и создатель. |
| Project Columns | Колонки классических досок проектов с их именем и проектом, которому они принадлежат. |
| Project Cards | Карточки классических досок проектов: заметка, признак архива, создатель и ссылки на колонку и содержимое карточки. |
| Stargazers | Пользователи, поставившие репозиторию звезду, и время каждой звезды. |
Репозитории
Выберите репозитории, которые читает пайпла йн.

В списке перечислены все репозитории, доступные авторизованному аккаунту, под названием каждого указано имя вида owner/repo. Отметьте репозитории для выгрузки или нажмите Select All.
У типа отчёта Repositories выбора репозиториев нет: он всегда возвращает все репозитории, доступные аккаунту.
Teams и Team Members относятся к организации. Renta определяет организацию по владельцу каждого выбранного репозитория, поэтому репозиторий личного аккаунта ничего не даёт этим двум отчётам.
Параметры
Выберите поля GitHub, которые попадут в таблицу назначения. Схема датасета определяется выбранными здесь параметрами.

В каждой строке указано имя поля, а под ним имя колонки в таблице назначения: Node ID превращается в колонку node_id.
Набор доступных полей зависит от типа отчёта. Renta раскладывает объекты, вложенные GitHub внутр ь записи, поэтому автор коммита приходит как Author Login, Author ID, Author Type и Author HTML URL, а веха пул-реквеста как Milestone ID, Milestone Title, Milestone State и Milestone Due On.
Поля со списком объектов загружаются вложенными записями.
| Тип отчёта | Поля, которые загружаются вложенными записями |
|---|---|
| Commits, Pull Request Commits | Parents |
| Issues | Labels, Assignees |
| Pull Requests, Pull Request Stats | Labels, Assignees, Requested Reviewers, Requested Teams |
| Releases | Assets |
| Commit Check Runs, Workflow Runs | Pull Requests |
| Workflow Jobs | Steps |
Поля, форма которых зависит от самой записи, приходят в виде JSON. Это Payload в Events и Deployments, Reactions везде, где GitHub их отдаёт, Auto Merge, Head Repo и Base Repo в отчётах по пул-реквестам, Repository, Head Repository и Referenced Workflows в Workflow Runs, а также поля сущностей в Issue Events: Label, Assignee, Milestone, Rename.
Три обязательных поля Renta отмечает заранее и блокирует в списке: ключ записи (ID, у Commits это SHA, а у Stargazers это User ID), дату изменения (Updated At, Created At и похожие) и дату с точностью до дня, по которой партиционируется таблица назначения (Updated Date, Created Date и похожие). Типы отчётов без даты загружаются целиком, обязательных полей у них нет.
Имя таблицы
Задайте имя пайплайна и таблицы назначения.

- Integration name.
Имя пайплайна. Оно используется только в интерфейсе Renta. - Table name.
Имя таблицы назначения. Можно оставить автоматически сгенерированное имя или задать своё.
Диапазон дат
Задайте исторический период загрузки. По умолчанию Date start равен первому дню текущего месяца, а Date end установлен в Today.

- Date start.
Первая дата периода выгрузки. - Date end.
Последняя дата периода выгрузки. Можно выбрать фиксированную дату или относительный вариант, например Today.
Renta оставляет только записи, дата которых попадает в диапазон. Репозиторий, который никто не менял внутри диапазона, не попадёт в таблицу Repositories, как и пул-реквест, которого не касались с прошлого года. Задайте Date start достаточно ранним для нужной вам истории.
У Branches, Tags, Issue Labels, Pull Request Commits, Collaborators, Assignees, Teams и Team Members даты нет, поэтому диапазон они игнорируют и загружаются целиком.
Период перезаписи
Период перезаписи определяет, сколько последних дней Renta перезагружает при каждом запуске. Renta заранее отмечает параметр с датой, по которой партиционируется тип отчёта, поэтому настройка видна у всех типов отчётов из таблицы ниже.

| Параметр с датой | Типы отчётов |
|---|---|
| Updated At | Repositories, Commit Comments, Issues, Issue Comments, Issue Milestones, Pull Requests, Review Comments, Pull Request Stats, Deployments, Workflows, Projects, Project Columns, Project Cards |
| Created At | Issue Events, Releases, Events, Workflow Runs |
| Commit Author Date | Commits |
| Completed At | Commit Check Runs |
| Started At | Workflow Jobs |
| Submitted At | Reviews |
| Starred At | Stargazers |
При каждом запуске Renta заново запрашивает данные начиная с даты последнего успешного запуска минус период перезаписи. Затронутые дни удаляются из таблицы назначения и вставляются заново, а более старые данные остаются нетронутыми.
Варианты: от Without overwrite data до Overwrite all data. По умолчанию выбран Last 1 day.
На Google BigQuery и ClickHouse Renta сама отслеживает точку синхронизации и обновляет записи по идентификатору, поэтому там период перезаписи не меняет загружаемое окно. Подробности в разделе «Стратегия синхронизации» ниже.
Расписание
Выберите, как часто запускается пайплайн.

| Тип расписания | Описание |
|---|---|
| Manual | Пайплайн запускается только вручную через интерфейс или по API. |
| Daily | Пайплайн запускается раз в сутки в указанное время обновления. |
| Interval | Пайплайн запускается через заданные интервалы времени. |
| Cron Expression | Пайплайн запускается по расписанию, заданному cron-выражением. |
Для расписания Daily укажите Update time (точное время запуска), затем нажмите Create pipeline.

Renta также поддерживает запуск по API и интеграцию с внешними оркестраторами, такими как Apache Airflow, Dagster и Prefect. Подробности в документации по расписаниям.
Новый пайплайн появится в разделе Pipelines на вкладке ETL, где можно отслеживать запуски, прогресс и имя таблицы назначения.

Ограничения
API GitHub задаёт границы, которые действуют для любого пайплайна на этом источнике.
| Ограничение | Описание |
|---|---|
| Лимит запросов к API | GitHub разрешает 5000 запросов в час на авторизованный аккаунт, и все пайплайны подключения расходуют этот лимит вместе. Когда он исчерпан, запуск останавливается с сообщением о лимите и продолжается по следующему расписанию. |
| Охват истории коммитов | Отчёт Commits читает ветку по умолчанию каждого репозитория. Коммиты, которые существуют только в других ветках, попадают в хранилище через Pull Request Commits. |
| Хранение событий | GitHub хранит события репозитория за последние 90 дней, поэтому отчёт Events не может достать данные глубже независимо от диапазона дат. |
| Классические доски проектов | 23 августа 2024 года GitHub закрыл Projects (classic) и перенёс доски в Projects v2, которых нет в REST API. Projects, Project Columns и Project Cards возвращают строки только для аккаунтов, где классические доски ещё остались. |
| Объекты только для организаций | Teams и Team Members существуют только у организаций. Репозитории личных аккаунтов пропускаются, и запуск завершается без строк по ним. |
| Длительность запуска | Pull Request Commits, Reviews, Pull Request Stats, Commit Check Runs, Workflow Jobs и Project Cards описывают объекты, вложенные внутрь других объектов, поэтому загружаются дольше всех и забирают наибольшую долю часового лимита. |
Стратегия синхронизации
Способ синхронизации отчёта GitHub зависит от типа отчёта и от того, поддерживает ли назначение merge.
| Стратегия | Поддерживаемые типы отчётов | Описание |
|---|---|---|
| Инкрементальная (merge) | Repositories, Commits, Commit Comments, Commit Check Runs, Issues, Issue Comments, Issue Events, Issue Milestones, Pull Requests, Reviews, Review Comments, Pull Request Stats, Releases, Deployments, Events, Workflows, Workflow Runs, Workflow Jobs, Projects, Project Columns, Project Cards, Stargazers (на Google BigQuery и ClickHouse) | Renta запрашивает записи, изменившиеся с прошлого запуска, и обновляет их в таблице назначения по id записи. Commits сопоставляются по sha, а Stargazers по user_id. Каждый запуск перечитывает трёхчасовое перекрытие, поэтому изменение, дошедшее до GitHub с задержкой, всё равно попадёт в таблицу. Первый запуск загружает настроенный диапазон дат. |
| Инкрементальное обновление | Те же типы отчётов на остальных назначениях | Таблица назначения партиционируется по дню даты записи. При каждом запуске Renta читает окно от последнего успешного запуска минус период перезаписи, затронутые дневные партиции удаляются и вставляются заново. Более старые партиции остаются нетронутыми. |
| Полная перезагрузка | Branches, Tags, Issue Labels, Pull Request Commits, Collaborators, Assignees, Teams, Team Members | У этих объектов нет даты изменения, поэтому Renta читает их целиком при каждом запуске и заменяет содержимое таблицы назначения. Таблица повторяет состояние выбранных репозиториев на момент запуска. |
У Pull Request Commits есть параметр Commit Author Date, поэтому для него появляется настройка Overwrite Period. Отчёт всё равно перезагружается целиком, потому что GitHub не отдаёт дату изменения коммита внутри пул-реквеста.
Запись, которую GitHub перестал отдавать, например удалённая задача, остаётся в таблице назначения у типов отчётов с инкрементальной загрузкой. У типов с полной перезагрузкой она исчезает на следующем запуске.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.