В 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 создает стенд независимо от того, какие директории затронуты изменениями.
Настройка автоматического создания стендов
-
Перейдите в раздел «App Platform» и выберите нужное приложение.
-
Откройте вкладку «Стенды».
-
Нажмите «Автоматизация».
-
Включите опцию «Автоматический деплой по Pull Request».
-
При необходимости включите опцию «Автоматически передавать переменные приложения».
-
Нажмите «Сохранить».

После включения автоматизации откройте 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:
-
Нажмите «Настроить доступы» в предупреждении.
-
В GitHub на вкладке «Installed GitHub Apps» найдите «Timeweb Cloud Apps» и нажмите «Configure».

Интерфейс выдачи прав GitHub
-
В блоке с запросом на обновление разрешений нажмите «Review request».

Интерфейс выдачи прав GitHub
-
Проверьте запрашиваемое разрешение — «Read and write access to Pull requests» — и нажмите «Accept new permissions».

Интерфейс выдачи прав 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:
-
Откройте вкладку «Настройки» стенда.
-
Отключите опцию «Удалять стенд при закрытии Pull Request».
-
Нажмите «Сохранить».
После этого закрытие или слияние Pull Request не приведет к удалению стенда. Когда он больше не понадобится, удалите его вручную.