WorkAI

GitHub

Как подключить GitHub к проекту Создателя WorkAI: права приложения, выгрузка кода в репозиторий одним коммитом, импорт репозитория и отключение доступа.

Эта интеграция относится к режиму Создатель (Builder Web) — конструктору, который генерирует веб-проект по вашему описанию. Приложение GitHub здесь решает одну конкретную задачу: перенести готовый проект из Создателя в ваш репозиторий и, при необходимости, забрать код в обратную сторону. Подключение занимает пару шагов и не создаёт на GitHub ни новых репозиториев, ни веток, ни автоматических подписок на события.

Если вы имеете в виду работу с git из десктопного агента WorkAI (клонирование, коммиты, ветки в терминале) — это не эта страница. Агент работает с git локально обычными командами, отдельного подключения к GitHub для этого не требуется. Ревью пул-реквестов, комментариев в issues и запусков проверок на стороне GitHub интеграция не делает — если вы ждёте этого по опыту других редакторов, здесь такого нет.

Что делает интеграция

Есть два направления:

  • Выгрузка (экспорт). Вы привязываете проект Создателя к репозиторию, и по кнопке «Синхронизировать» WorkAI собирает файлы последней версии проекта и записывает их одним коммитом в ветку репозитория по умолчанию.
  • Импорт. Существующий репозиторий можно импортировать — из него создаётся новый проект Создателя. Текущий открытый проект при этом не меняется.

Чего интеграция не делает: не открывает pull request'ы, не читает issues, не создаёт отдельных веток и не подписывается на события в репозитории. Обмен всегда начинается с вашего действия в WorkAI.

Как подключить репозиторий

  1. В открытом проекте Создателя откройте меню «Ещё» и выберите «Подключить GitHub» (в компактной раскладке меню тот же пункт подписан «Экспорт в GitHub»).
  2. WorkAI откроет страницу установки приложения на github.com. Там вы выбираете аккаунт или организацию и решаете, каким репозиториям дать доступ — всем или только выбранным.
  3. После подтверждения GitHub вернёт вас обратно в проект.
    • Если репозиторий с правом записи ровно один, WorkAI сразу привяжет его и выполнит первую выгрузку.
    • Если их несколько — откроется список «Выберите репозиторий», где вы указываете нужный.
  4. После привязки в шапке проекта появляется имя репозитория и кнопки «Синхронизировать» и «Отключить».

Ссылка на установку живёт 10 минут. Если вернуться с GitHub позже, подключение не состоится: браузер откроет список проектов Создателя без объяснения. Откройте проект и начните с первого шага заново.

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

Какие права запрашивает приложение

ПравоЗачем
Чтение и запись содержимого репозиторияЗаписывать файлы проекта при выгрузке и скачивать содержимое при импорте
Чтение метаданных репозиторияПолучать список репозиториев, их видимость и ветку по умолчанию

Больше приложение ничего не запрашивает: доступа к issues, pull request'ам, Actions, настройкам репозитория и участникам у него нет.

Отдельно при подключении вы проходите обычную авторизацию GitHub. Она нужна, чтобы WorkAI видел ровно тот срез репозиториев, к которому есть доступ у вас лично, а не всё, что видит установленное приложение. В организации это важно: приватные репозитории, к которым вас не добавили, в списке не появятся. Список прав доступа перепроверяется при каждой операции — если доступ отозвали на стороне GitHub, выгрузка не пройдёт, а не отработает вслепую.

Что происходит при первой выгрузке

WorkAI берёт файлы последней версии проекта и создаёт один коммит в ветке репозитория по умолчанию — той, что указана в настройках самого репозитория. Отдельная ветка не создаётся, pull request не открывается.

  • Репозиторий пустой. Ветка инициализируется первым файлом проекта, дальше коммит собирается обычным образом.
  • В репозитории уже есть код. Новый коммит ложится поверх текущего состояния ветки: файлы проекта добавляются и перезаписываются по совпадающим путям. Построчного слияния нет — файл с тем же путём заменяется целиком версией из Создателя.
  • Файлы, которых нет в проекте, не удаляются. Если раньше вы выгрузили файл, а потом он исчез из проекта, в репозитории он останется.

Сообщение коммита — WorkAI export: v<номер версии>, по нему видно, какой версии проекта соответствует выгрузка.

Кроме исходников в коммит попадают служебные файлы проекта — Dockerfile, nginx-default.conf, workai-template.json. Это часть проекта на стороне WorkAI: по ним платформа собирает и публикует сайт. Править в репозитории их — как и любые другие файлы проекта — смысла нет: следующая выгрузка вернёт версию из Создателя.

Как выгружать изменения дальше

Выгрузка не происходит сама после каждой генерации — её запускает кнопка «Синхронизировать» в шапке проекта. Рядом всегда видно имя привязанного репозитория и результат последней попытки: при неудаче появляется пометка «— ошибка синка», а текст ошибки показывается подсказкой. Провал никогда не выглядит как успех.

Ограничение по размеру: один файл проекта не должен превышать 50 МБ — файл больше этого лимита выгрузку останавливает с явной ошибкой.

Можно ли выгружать проект сразу в несколько репозиториев

Нет: у проекта в каждый момент ровно один привязанный репозиторий. Если подключить GitHub заново и выбрать другой репозиторий, привязка не добавится, а заменит прежнюю — дальше выгрузки пойдут только в новый. Коммиты, уже сделанные в старом репозитории, остаются на месте, но обновляться перестанут.

Обратное ограничение платформа не проверяет: в один и тот же репозиторий может выгружаться несколько разных проектов Создателя — и они будут перезаписывать файлы друг друга, потому что каждая выгрузка кладёт поверх ветки снимок своего проекта. Держите один репозиторий на проект.

Как импортировать существующий репозиторий

В меню «Ещё» есть отдельное действие «Из GitHub» (в компактной раскладке — «Импортировать из GitHub») — оно создаёт из репозитория новый проект Создателя. Порядок тот же: установка приложения (если ещё не установлено), выбор репозитория в окне «Импортировать репозиторий», затем WorkAI скачивает содержимое ветки по умолчанию и собирает из него проект.

Импортированный проект сразу привязывается к тому же репозиторию, поэтому обратная выгрузка работает без дополнительных шагов. По завершении показывается экран с итогом: сколько файлов приехало, что было пропущено и какие есть предупреждения.

Такой же импорт доступен из GitLab.com — он тоже создаёт новый проект, но обратной выгрузки в GitLab нет.

Импорт — это разовый снимок содержимого. Он не подписывается на изменения в репозитории: новые коммиты, сделанные вами в GitHub после импорта, в проект Создателя не подтягиваются.

Какие проекты импорт не принимает

Создатель публикует собранную статику, поэтому проекты, которым в продакшене нужен собственный серверный процесс, отклоняются сразу — с объяснением, а не «импортируются» и потом молча не собираются.

Что в репозиторииРезультат импорта
ViteПринимается, сборка npm run build
Create React AppПринимается, каталог сборки build/
Готовая статика с index.html в корнеПринимается как есть, без сборки
Другой инструмент сборкиПринимается, но платформа ждёт результат в dist/ — иначе страница будет пустой
Next.js, Nuxt, Remix, SvelteKit, Astro, Angular CLIОтклоняется: это другой контур публикации
Нет ни package.json, ни index.html в корнеОтклоняется: непонятно, как собирать

Импорт также откажет, если в package.json нет команды сборки и при этом нет собранного index.html в корне.

Что не попадёт в импортированный проект

Импорт берёт исходники и осознанно отбрасывает остальное. Всё пропущенное перечисляется на экране результата — сгруппированно, с причиной.

Что пропускаетсяПочему
.env, ключи, учётные данныеСекретам не место в платформе
node_modules, dist, build, .git и подобные каталогиЭто не исходники, а результат сборки и зависимости
Картинки, шрифты, архивы и другие двоичные файлыИмпорт работает с текстовыми файлами
Файлы больше 256 КБОграничение на отдельный файл

Кроме того, действуют потолки: не более 800 файлов и 8 МБ исходников суммарно. Их превышение не отменяет импорт: лишние файлы просто не приезжают, попадают в список пропущенных и на экране результата появляется предупреждение, что часть файлов осталась за бортом. Проверьте состав проекта, прежде чем публиковать его.

А вот скачиваемый архив репозитория ограничен 12 МБ (в сжатом виде; на распакованный объём и число записей действуют свои внутренние потолки), и это уже отказ: импорт не начнётся и предложит убрать зависимости, результаты сборки и крупные файлы. Ещё один отказ — если после фильтрации не осталось ни одного текстового файла с исходниками.

После импорта картинки и шрифты придётся загрузить в проект заново.

Что означают предупреждения на экране результата импорта

Предупреждения не отменяют импорт: проект создан, открыть его можно сразу. Они говорят о том, где результат может разойтись с ожиданием.

ПредупреждениеЧто оно значит
Живое превью не поднимется: есть пакеты вне предустановленного набораПревью запускается на заранее подготовленном наборе библиотек, а публикация ставит зависимости проекта по-настоящему. Опубликованный сайт соберётся, а вот превью до публикации может остаться пустым
Живое превью может отличаться от публикации: в vite.config заданы алиасы или плагиныПревью использует совместимый конфиг платформы, а не ваш. На публикацию это не влияет
Инструмент сборки не распознан — результат ожидается в dist/Сборка запустится, но если она кладёт файлы в другой каталог, опубликованная страница будет пустой
В package.json нет команды сборки — проект опубликуется как естьИмпортирована готовая статика, шага сборки не будет
Архив больше лимитов импорта — часть файлов не приехалаПроект неполный, проверьте состав файлов до публикации

В импортированный проект добавляются служебные файлы платформы — Dockerfile, nginx-default.conf, workai-template.json. Если одноимённые файлы были в репозитории, они заменяются платформенными: по ним собирается публикация.

Как отключить репозиторий и отозвать доступ

Это два разных действия:

  • «Отключить» в шапке проекта разрывает связь проекта с репозиторием. Кнопка синхронизации пропадает, но приложение остаётся установленным в вашем GitHub-аккаунте, и другой проект можно привязать к репозиторию заново.
  • Полный отзыв доступа делается на стороне GitHub: в настройках аккаунта или организации, в разделе установленных приложений, удалите установку приложения WorkAI. После этого пропадает и доступ к репозиториям, и возможность выгружать в них проекты — при попытке синхронизации WorkAI покажет, что доступ не подтверждён.

Ни отключение, ни отзыв доступа не удаляют уже сделанные коммиты — выгруженный код остаётся в репозитории.

Если что-то не работает

Нужного репозитория нет в списке. Проверьте, что при установке приложения вы дали доступ именно ему (в GitHub можно выбрать «только выбранные репозитории» и потом добавить ещё). В списке показываются только репозитории, где у вас есть право записи, и только те, что доступны лично вам, а не всей организации.

«Не удалось подключить GitHub». Это общий текст для двух случаев. Первый и самый частый — в выбранной установке нет ни одного репозитория, где у вас есть право записи; в организации установку приложения может потребоваться подтвердить её владельцу. Второй — пока вы были на GitHub, проект перешёл к другому владельцу: подключать репозиторий может только текущий владелец проекта.

Возврат с GitHub привёл на список проектов, и ничего не произошло. Так выглядит просроченная ссылка на подключение (прошло больше 10 минут) или возврат без нужных параметров — сообщения на этом экране не будет. Откройте проект и запустите подключение заново; если повторяется, попробуйте в окне без расширений, блокирующих переходы.

«Текущий доступ GitHub к этому репозиторию не подтверждён». Права проверяются заново перед каждой операцией. Сообщение появляется, если доступ приложения к репозиторию сузили или отозвали на стороне GitHub, а также если репозиторий переименовали или перенесли. Подключите GitHub заново и выберите репозиторий ещё раз.

«Установка GitHub App принадлежит другому аккаунту». Общий текст для сбоя обмена с GitHub при возврате. Чаще всего вы авторизовались в WorkAI под одним аккаунтом GitHub, а установку выбрали в другом: выйдите из лишнего аккаунта в браузере и повторите. Если аккаунт один, попробуйте ещё раз — GitHub мог не ответить на запрос списка репозиториев.

Синхронизация падает. Проверьте, что доступ приложения к репозиторию не отозван на стороне GitHub и что ни один файл проекта не превышает 50 МБ. Текст последней ошибки виден в подсказке рядом с именем репозитория.

Импорт отклонён. Сообщение всегда содержит причину — чаще всего это фреймворк со своим серверным процессом или слишком объёмный архив репозитория. См. разделы выше.

Похожие темы