php-censor/docs/ru/environments.md

82 lines
4.3 KiB
Markdown
Raw Normal View History

Использование окружений для проекта
===================================
Окружение может включать несколько веток: основная ветка (ветка проекта по-умолчанию) и опционально дополнительные
ветки, которые будут влиты в основную ветку при клонировании репозитория (Дополнительных веток может быть больше
одной, все они будут влиты в основную по очереди).
Когда код пушится в какую-либо ветку, создаются сборки со всеми окружениями, включающими данную ветку (Основная ветка
неявно связана со всеми окружениями).
Это может быть полезно например, когда нужно отложить вливание ветки в `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`).
* После создания запроса на слияние для добавления ветки в окружение, добавьте необходимые метки.