До 12.5 млн токенов на тест ИИ-агента
Вход/ Регистрация

Автоматическое создание стендов по Pull Request

В App Platform можно настроить автоматическое создание стендов при открытии Pull Request в GitHub. Для изменений из ветки будет развернута отдельная версия приложения с собственным техническим доменом. На ней можно проверить работу приложения до слияния изменений в целевую ветку.

Pull Request — это запрос на слияние изменений из одной ветки репозитория в другую. Например, из ветки с новой функцией в main. Пока Pull Request открыт, вы можете вносить изменения в исходную ветку и проверять их на стенде.

Общие условия использования описаны в статье о стендах.

Ограничения

  • Автоматическое создание стендов доступно только для приложений из репозиториев GitHub,подключенных через аккаунт. Для репозиториев, подключенных по URL, функция недоступна.

  • Для одного приложения доступно не более 10 стендов. Если лимит достигнут, при открытии нового Pull Request стенд не создастся, даже если автоматическое создание стендов включено.

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

Репозитории с несколькими приложениями

Если в одном репозитории находятся несколько приложений, при открытии Pull Request App Platform сопоставляет пути измененных файлов с директорией, из которой развернуто приложение. Стенд создается, если изменения затрагивают эту директорию.

Например, в репозитории есть директории frontend и backend, а приложение в App Platform развернуто из frontend:

  • Если при открытии Pull Request есть изменения в frontend, для приложения создается стенд.

  • Если изменения затрагивают только backend, стенд для фронтенд-приложения не создается.

  • Если после открытия такого Pull Request добавить изменения в frontend, это не запустит создание стенда. Чтобы создать его, закройте Pull Request без слияния и откройте повторно либо создайте новый Pull Request, в котором уже есть изменения в frontend.

Если в Pull Request изменено больше 300 файлов, сравнение изменений через GitHub недоступно. В этом случае App Platform создает стенд независимо от того, какие директории затронуты изменениями.

Настройка автоматического создания стендов

  1. Перейдите в раздел «App Platform» и выберите нужное приложение.

  2. Откройте вкладку «Стенды».

  3. Нажмите «Автоматизация».

  4. Включите опцию «Автоматический деплой по Pull Request».

  5. При необходимости включите опцию «Автоматически передавать переменные приложения».

  6. Нажмите «Сохранить».

Включение автоматизации

После включения автоматизации откройте Pull Request в подключенном репозитории GitHub. App Platform создаст стенд и запустит его деплой.

Передача переменных приложения

Опция «Автоматически передавать переменные приложения» позволяет передавать переменные основного приложения в стенд при его создании. Она работает независимо от автоматического создания стендов по Pull Request.

После создания стенда переменные не синхронизируются с основным приложением. Если вы измените переменные основного приложения, для существующего стенда их потребуется обновить отдельно.

Если для запуска приложения нужны переменные, например параметры подключения к базе данных или внешнему сервису, включите их автоматическую передачу или задайте необходимые значения в настройках стенда.

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

Настройка разрешений GitHub

Чтобы бот Timeweb Cloud Apps мог добавлять в Pull Request комментарии со ссылками на стенд, интеграции GitHub необходим доступ к Pull Request на чтение и запись. Новые интеграции уже имеют эти разрешения, в том числе после отключения и повторного подключения в панели App Platform. Для ранее подключенных интеграций может потребоваться обновить права. Без этого разрешения стенды будут создаваться, но комментарии в GitHub не появятся. Перейти к стенду можно будет из панели App Platform.

Для проверки разрешений откройте приложение в разделе «App Platform», перейдите на вкладку «Стенды» и нажмите «Автоматизация».

Если в открывшемся окне отображается предупреждение «Нет доступа к комментариям в GitHub», обновите разрешения интеграции Timeweb Cloud Apps:

  1. Нажмите «Настроить доступы» в предупреждении.

  2. В GitHub на вкладке «Installed GitHub Apps» найдите «Timeweb Cloud Apps» и нажмите «Configure».

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

Интерфейс выдачи прав GitHub

  1. В блоке с запросом на обновление разрешений нажмите «Review request».

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

Интерфейс выдачи прав GitHub

  1. Проверьте запрашиваемое разрешение — «Read and write access to Pull requests» — и нажмите «Accept new permissions».

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

Интерфейс выдачи прав GitHub

После обновления разрешений Timeweb Cloud Apps сможет добавлять в Pull Request комментарии со ссылками на стенды.

Если предупреждения нет, обновлять разрешения не требуется.

Жизненный цикл стенда

App Platform управляет стендом в зависимости от действий в GitHub: создает его при открытии Pull Request, обновляет при новых коммитах в исходной ветке и по умолчанию удаляет при закрытии Pull Request.

Создание

При открытии Pull Request App Platform создает стенд для исходной ветки и запускает деплой. Стенд появляется во вкладке «Стенды» с меткой «PR». Например, для Pull Request с номером 1 создается стенд PR-1.

В списке отображаются ветка, коммит, комментарий к коммиту и статус деплоя.

Создание стнеда

Бот Timeweb Cloud Apps добавляет в Pull Request комментарий с информацией о деплое и ссылками для перехода к стенду. После успешного деплоя приложение доступно по отдельному техническому домену. Его также можно найти в настройках стенда в панели управления.

Открытие Pull Request само по себе не переносит изменения в целевую ветку. Вы можете проверить их на стенде до слияния.

Обновление

Стенд создается с включенной опцией «Сборка по последнему выполненному коммиту». Когда вы отправляете новые коммиты в исходную ветку Pull Request, App Platform автоматически запускает повторный деплой этого стенда. Его адрес остается прежним.

В комментарии бота обновляются сведения о коммите и статусе деплоя.

Удаление

По умолчанию стенд автоматически удаляется при закрытии Pull Request. Это происходит как при закрытии без слияния, так и при слиянии изменений.

  • При закрытии без слияния стенд удаляется, а изменения из Pull Request не попадают в целевую ветку.

  • При слиянии стенд удаляется, а изменения попадают в целевую ветку. Если основное приложение развернуто из этой ветки и для него включен автодеплой, оно автоматически обновится.

Если стенд нужен после закрытия Pull Request, заранее отключите его автоматическое удаление.

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

Чтобы открыть настройки, перейдите во вкладку «Стенды» приложения и нажмите на нужный стенд в списке.

В настройках можно изменить название стенда, управлять переменными и скопировать технический домен. Для просмотра логов откройте вкладку «Логи стенда».

Подробнее об этих действиях — в инструкции по управлению стендами.

У стенда, созданного по Pull Request, нельзя изменить ветку сборки, но можно выбрать конкретный коммит. Для этого отключите опцию «Сборка по последнему выполненному коммиту», выберите коммит и сохраните настройки. Стенд перестанет автоматически обновляться, а в Pull Request появится уведомление о закреплении стенда на выбранном коммите.

Для стендов, созданных по Pull Request, можно отключить автоматическое удаление после его закрытия. 

Конфигурация стенда

Для сохранение стенда после закрытия Pull Request:

  1. Откройте вкладку «Настройки» стенда.

  2. Отключите опцию «Удалять стенд при закрытии Pull Request».

  3. Нажмите «Сохранить».

После этого закрытие или слияние Pull Request не приведет к удалению стенда. Когда он больше не понадобится, удалите его вручную.

Была ли статья полезна?
Ваш ответ поможет улучшить документацию
Пока нет комментариев