82 lines
4.3 KiB
Markdown
82 lines
4.3 KiB
Markdown
Использование окружений для проекта
|
||
===================================
|
||
|
||
Окружение может включать несколько веток: основная ветка (ветка проекта по-умолчанию) и опционально дополнительные
|
||
ветки, которые будут влиты в основную ветку при клонировании репозитория (Дополнительных веток может быть больше
|
||
одной, все они будут влиты в основную по очереди).
|
||
|
||
Когда код пушится в какую-либо ветку, создаются сборки со всеми окружениями, включающими данную ветку (Основная ветка
|
||
неявно связана со всеми окружениями).
|
||
|
||
Это может быть полезно например, когда нужно отложить вливание ветки в `master`-ветку в репозитории или
|
||
необходимо протестировать несколько веток вместе. Так же это может пригодится при деплое.
|
||
|
||
|
||
Примеры конфигурации и пояснения
|
||
--------------------------------
|
||
|
||
Конфигурирование окружений производится через веб-интерфейс на странице создания/редактирования проекта.
|
||
|
||
Ниже пример для проекта с 3мя окружениями:
|
||
|
||
* Production (`pr`) - Связан с веткой проекта по-умолчанию (Например: `master`. По сути обычная сборка без слияния
|
||
веток).
|
||
|
||
* Release candidate (`rc`) - В основную ветку (`master`) вливается ветка `feature-A`.
|
||
|
||
* Test (`test`) - В основную ветку (`master`) вливается ветка `feature-B`
|
||
|
||
```yml
|
||
pr:
|
||
rc:
|
||
- feature-A
|
||
test:
|
||
- feature-B
|
||
```
|
||
|
||
Если код пушится в ветку `master`, то создается 3 сборки по одной на каждое окружение.
|
||
|
||
Если код пушится в ветку `feature-A`, то создается одна сборка с окружением `rc` (То же самое произойдет и для ветки
|
||
`feature-B`, только сборка будет с окружением `test`).
|
||
|
||
Если код пушится в ветку `feature-C`, которая не связаны ни с одним окружением, то создастся одна обычная сборка (Так
|
||
же как, если бы окружения не были настроены вовсе).
|
||
|
||
|
||
Использование переменной %ENVIRONMENT% в конфигурации проекта
|
||
-------------------------------------------------------------
|
||
|
||
Вы можете получить и использовать текущее окружение с помощью переменной `%ENVIRONMENT%` (Смотри [Использование
|
||
переменных в конфигурации проекта](interpolation.md)). Например:
|
||
|
||
```yml
|
||
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`).
|
||
|
||
* После создания запроса на слияние для добавления ветки в окружение, добавьте необходимые метки.
|