Подключить код (/projects/connect/code) связывает проект aiKit с уже имеющимся у вас Git-репозиторием, например приложением Laravel на GitHub, и с местом, где он работает: вашим сервером или хостингом aiKit. После этого вы просите внести изменения обычными словами на вкладке «Хостинг» проекта. ИИ aiKit редактирует копию кода, запускает проверки проекта, показывает вам различия и предпросмотр и публикует только после того, как кто-то из вашей команды одобрит изменения. Каждая публикация — это пронумерованная версия, которую можно откатить одним нажатием. Ваш репозиторий остаётся главным источником, а ваш сервер продолжает публиковать код так же, как и раньше.
Подключите код →Назовите проект, затем вставьте адрес репозитория (из зелёной кнопки Code на GitHub) и ветку, с которой работает сайт, обычно main. Выберите, как aiKit будет к нему обращаться. Токен GitHub: токен с ограниченным доступом, который вы создаёте на GitHub только для этого репозитория, с правом Contents: Read and write; он используется с адресом https://. Ключ развёртывания: пара ключей, созданная только для этого репозитория; публичную часть добавьте в Settings, Deploy keys репозитория и отметьте Allow write access; он используется с адресом git@. Публичный репозиторий: только чтение, поэтому утверждённым изменениям некуда будет сохраниться; используйте его только для просмотра.
Токен или ключ вы вставляете сами. Он хранится в зашифрованном виде на движке aiKit и никогда больше не показывается никому. На странице отображается только отпечаток. Подключение репозитория копирует код на движок и определяет тип проекта (Laravel, JavaScript или статические файлы). Репозиторий при этом не меняется.
Уже имеющийся проект тоже можно подключить: на его вкладке «Хостинг» владелец видит кнопку «Подключить код».
Ваш сервер: сайт остаётся на месте. Введите адрес сервера, SSH-порт (обычно 22), логин, который использует aiKit (шаги настройки создают пользователя aikit), папку сайта (для сайта Laravel Forge это /home/forge/your-site.com), команду развёртывания, которую сайт уже использует (обычно bash scripts/deploy.sh), и страницы, которые должны отвечать после каждой публикации, по одному полному адресу в строке. Вставьте приватный ключ логина на сервере (созданный на шаге 1 настройки). Сохраните и проверьте подключение.
При первом обращении aiKit к серверу он показывает отпечаток ключа сервера и спрашивает: «Это ваш сервер?» Сравните его с тем, что сервер вывел на шаге 6 настройки. Нажимайте «Совпадает» только тогда, когда они идентичны, и затем «Подключить». После этого сервер с другим отпечатком по этому адресу будет отклонён. Когда проверка пройдена, страница сообщает, какая версия сейчас работает на сервере.
Хостинг aiKit: aiKit сам собирает код и раздаёт его, с бесплатным адресом для начала. Лучше всего подходит для сайтов и фронтенда.
В разделе «Настройка сервера» страница показывает восемь шагов для копирования и вставки, уже заполненных вашими значениями; у каждого есть кнопка «Копировать». Шаги 1 и 8 выполняются на вашем компьютере, шаги 2–7 на сервере от пользователя с правами sudo.
Что они создают: логин без пароля и без оболочки (шаг 2). Его единственный ключ привязан к небольшому скрипту-шлюзу (шаги 3 и 5), который принимает ровно две команды: status (какая версия работает и включён ли режим обслуживания) и deploy одного конкретного коммита. Развёртывание выполняется от имени собственного пользователя сайта через одно правило sudo, проверяет, что ветка на GitHub указывает именно на этот коммит, и затем запускает ваш существующий скрипт развёртывания без изменений. Шаг 4 настраивает права на папки так, чтобы логин имел доступ только к папке сайта: не к другим сайтам в той же домашней папке и никогда не к .env. Шаг 7 проверяет всё это и объясняет, что вы должны увидеть для каждой строки, а шаг 8 проверяет логин с вашего компьютера, прежде чем вы вставите его ключ в aiKit.
Если на сервере размещены и другие компании, в этом и суть: логин aiKit может публиковать только этот сайт и ничего другого. Код сайта по-прежнему работает от имени пользователя сайта, точно так же, как при развёртывании из GitHub вручную, поэтому каждое изменение проверяется, а рискованные файлы защищены.
Четыре плитки вверху. Репозиторий: сам репозиторий, ветка, последний коммит и тип проекта. Работает на: ваш сервер (с логином и временем последнего ответа) или хостинг aiKit. Текущая версия: версия, которая работает на сайте, кто её выпустил и когда. Страницы: сколько из страниц, которые должны отвечать, ответили при последней проверке; «Проверить сейчас» снова их открывает, а любая страница, которая не ответила, перечисляется ниже с тем, что она вернула.
Ниже плиток: «Запросить изменение» (или изменение, которое открыто прямо сейчас), «Версии», «Журнал изменений», «Защищённые файлы» и, для владельца, «Подключение».
Напишите, что нужно изменить, указав страницу и желаемый результат, и нажмите «Внести изменение». Карточка превращается в «Изменение №1» с живым ходом работы: получение последнего кода, файлы, которые ИИ читает и редактирует, затем каждая проверка. ИИ только редактирует файлы и не выполняет команды. За один раз для проекта открыто одно изменение, и каждый запрос учитывается в лимите ИИ проекта.
По завершении вы видите: запрос и того, кто его создал; что, по словам ИИ, он сделал; проверки, каждая с галочкой или крестиком и результатом; кнопки «Предпросмотр» для проверенных страниц; файлы с пометками «Добавлен», «Изменён» или «Удалён» и значком «Защищён» там, где это применимо; и различия, файл за файлом: зелёным выделены добавленные строки, красным — удалённые. Именно эти различия будут зафиксированы и опубликованы.
Нажмите «Утвердить и опубликовать» (только для владельцев и разработчиков): изменение фиксируется в ветке с сообщением, в котором указано, кто запросил и кто утвердил, затем отправляется (никогда не принудительно: если кто-то отправил изменения в это время, запрос помечается как «Устарело», и ничего не публикуется), публикуется и проверяются страницы. «Отменить» удаляет изменение после подтверждения; ничего не публикуется. Проверяющие могут читать всё, но не могут нажимать ни то, ни другое.
Настройка «Подключение, проверки и проверка» определяет, что происходит после успешных проверок. По умолчанию выбрано «Ждать одобрения». «Публиковать автоматически» публикует изменение само только тогда, когда пройдены все проверки и не изменён ни один защищённый файл; во всех остальных случаях изменение всё равно ждёт одобрения.
Для проекта на Laravel выполняются такие проверки: каждый изменённый PHP-файл разбирается без ошибок (php -l); каждое Blade-представление компилируется (php artisan view:cache); фронтенд собирается (npm run build); приложение запускается в тестовом режиме с временной базой SQLite, которая создаётся и заполняется из репозитория, и каждая страница из списка «Страницы» должна отвечать кодом 200. Всё это выполняется на движке aiKit, никогда на вашем сервере и никогда с вашей рабочей базой данных. Файл .env проекта никогда не копируется и не читается; тестовый запуск получает временные настройки.
Если проверка не пройдена, «Утвердить» заблокировано. Только владелец может отметить «Опубликовать», даже если проверки не пройдены, но только для проверки, которая упала по причине, не влияющей на работу рабочего сайта.
«Предпросмотр» открывает изменённое приложение из тестового запуска в новой вкладке, с тестовыми данными и выключенными формами. Он останавливается через 15 минут после последнего использования и завершается, когда изменение утверждено или отменено.
ИИ не трогает защищённые файлы. В список входят по умолчанию: миграции, которые уже выполнены на рабочем сайте (каждая миграция из текущего релиза, так как при каждой публикации они запускаются), новые миграции (они изменили бы рабочую базу данных при следующей публикации), скрипт публикации и файлы зависимостей (composer.json, composer.lock, package.json, package-lock.json). Для каждой записи указана причина. Владелец может добавить файл или папку (config/** означает всё внутри config) с причиной, удалять записи и нажать «Сохранить защищённые файлы».
Чтобы намеренно изменить защищённый файл, владелец отмечает «Разрешить защищённые файлы для этого запроса». Затем в изменении показывается, какие защищённые файлы затронуты, и утвердить его может только владелец, отметив «Да, опубликовать изменения в защищённых файлах». Разработчик, который ничего не отметил, не получает доступа к защищённым файлам.
Файлы .env, закрытые ключи и auth.json находятся под более строгим ограничением: их никогда не читают, никогда не меняют, никогда не включают в сравнение версий, и никто не может это отключить.
Когда aiKit впервые подключается к вашему серверу, он сохраняет то, что сервер запускает, как релиз 1, «До aiKit», поэтому даже первую публикацию aiKit можно откатить. После этого каждая публикация становится пронумерованным релизом: «Изменение» (утверждённое изменение; его название открывает это изменение), «Повторная публикация» или «Откат», с коммитом, указанием, кто выполнил действие, статусом («Работает», «Ранее», «Работает, но страницы не открываются», «Публикация не удалась»), количеством ответивших страниц и журналом публикации. aiKit хранит последние 5 релизов.
«Опубликовать последний код» публикует самую новую версию из ветки на данный момент, после подтверждения, например, когда кто-то отправил исправление напрямую.
«Откатить к этому» для более раннего релиза создаёт новый коммит, файлы которого точно соответствуют этому релизу, отправляет его и публикует обычным способом, затем проверяет страницы. История никогда не переписывается, поэтому сам откат тоже можно откатить.
Каждый запрос с его номером, текстом, тем, кто запросил, кто утвердил или отменил, временем и текущим статусом. Нажмите на строку, чтобы открыть это изменение с его проверками и сравнением; в адресе появится ?change=<id>, поэтому вы можете поделиться ссылкой с командой.
Нужен быстрый ответ на конкретный вопрос? Загляните в FAQ.