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`).
|
|||
|
|
|||
|
* После создания запроса на слияние для добавления ветки в окружение, добавьте необходимые метки.
|