4.3 KiB
Использование окружений для проекта
Окружение может включать несколько веток: основная ветка (ветка проекта по-умолчанию) и опционально дополнительные ветки, которые будут влиты в основную ветку при клонировании репозитория (Дополнительных веток может быть больше одной, все они будут влиты в основную по очереди).
Когда код пушится в какую-либо ветку, создаются сборки со всеми окружениями, включающими данную ветку (Основная ветка неявно связана со всеми окружениями).
Это может быть полезно например, когда нужно отложить вливание ветки в master-ветку в репозитории или
необходимо протестировать несколько веток вместе. Так же это может пригодится при деплое.
Примеры конфигурации и пояснения
Конфигурирование окружений производится через веб-интерфейс на странице создания/редактирования проекта.
Ниже пример для проекта с 3мя окружениями:
-
Production (
pr) - Связан с веткой проекта по-умолчанию (Например:master. По сути обычная сборка без слияния веток). -
Release candidate (
rc) - В основную ветку (master) вливается веткаfeature-A. -
Test (
test) - В основную ветку (master) вливается веткаfeature-B
pr:
rc:
- feature-A
test:
- feature-B
Если код пушится в ветку master, то создается 3 сборки по одной на каждое окружение.
Если код пушится в ветку feature-A, то создается одна сборка с окружением rc (То же самое произойдет и для ветки
feature-B, только сборка будет с окружением test).
Если код пушится в ветку feature-C, которая не связаны ни с одним окружением, то создастся одна обычная сборка (Так
же как, если бы окружения не были настроены вовсе).
Использование переменной %ENVIRONMENT% в конфигурации проекта
Вы можете получить и использовать текущее окружение с помощью переменной %ENVIRONMENT% (Смотри Использование
переменных в конфигурации проекта). Например:
setup:
mysql:
- "DROP DATABASE IF EXISTS project_name_%ENVIRONMENT%;"
- "CREATE DATABASE project_name_%ENVIRONMENT%;"
test:
...
deploy:
mage:
env: %ENVIRONMENT%
Добавление веток в окружение с помощью webhook-а
Gogs
Необходимо подготовить проект в веб-интерфейсе Gogs:
-
Создать webhook для проекта.
-
Установить в поле "Payload URL" URL-адрес webhook-а для Gogs из PHP Censor (Например:
http://php-censor.local/webhook/gogs/<project_id>). -
Включить отправку события "Pull request".
-
Создать метки (labels) для ваших окружений в формате:
env:<environment-name>(Например:env:test). -
После создания запроса на слияние для добавления ветки в окружение, добавьте необходимые метки.