refactor(ci): update jobs and stages

parent d4fe2e47
# Docker Compose конфиг для Bitrix
## Как с этим работать
1. Выполнить подготовительную настройку и запушить в репо
1. На хосте:
1. Установить Битрикс
1. Настроить работу миграций
1. На всякий случай, забэкапить директории bitrix и upload
1. На локальной машине:
1. Установить Битрикс
1. Настроить работу миграций
1. Создать шаблон
1. Настроить сборку фронт-энда
1. В конфиге `.gitlab-ci.yml` разблокировать задачи по сборке (build_assets) и миграциям (migrations) (убрать точку перед названием)
1. ???
1. PROFIT!!!
**P.S.** При работе с проектом, если вдруг внесены изменения не требующие выгрузки на сервер, следует добавлять `[skip ci]` в сообщение коммита
## Как это работает
Процесс выгрузки содержит 3 стадии: (startup, build, deploy)
На стадии **startup** задача `save_user_data` из директорий bitrix и upload создает артефакт, чтобы использовать его в следующих стадиях. Благодаря переменной GIT_STRATEGY=none, на первом этапе с рабочей директорией ничего не происходит. Артефакт загружается на `git.zolotoykod.ru` и доступен для скачивания в *Pipelines* репо.
Задача `startup` завершает одноименную стадию и запускает Docker контейнеры.
На стадии **build** выполняются задачи `build_assets` и `migrations`.
- `build_assets` устанавливает зависимости для Node.js и выполняет сборку фронт-энда. Из собранных файлов также создается артефакт.
- `migrations` просто выполняет миграции.
Стадия **deploy** состоит из одноименной задачи `deploy`, которая служит для скачивания артефактов с предыдущих стадий.
## Подготовительная настройка
1. Поправить `docker-compose.yml`:
......@@ -13,7 +46,7 @@
* Подключить раннер `111-DEV-HST`
* Переименовать `gitlab-ci.yml` в `.gitlab-ci.yml` для работы CI
3. **Last but not least**. Для PHPStorm и других IDE от Jetbrains следует отключить папку `db` от индексации(!!!), чтобы она не влияла на производителность!
3. Настроить сборщик и указать директорию с собранными файлами в `.gitlab-ci.yml` (заменить вместо `%PATH_TO_BUILD%`)
## Запуск
......
stages:
- startup
- build
cache:
untracked: true
paths:
- www/bitrix/
- www/upload/
- www/vendor/
- www/node_modules/
- deploy
save_user_data:
stage: startup
......@@ -16,8 +9,11 @@ save_user_data:
- echo 'Create artifacts for Bitrix core'
variables:
GIT_STRATEGY: none
cache:
paths:
- www/bitrix/
- www/upload/
artifacts:
untracked: true
paths:
- www/bitrix/
- www/upload/
......@@ -28,17 +24,32 @@ startup:
script:
- docker-compose up -d
build_assets:
.build_assets:
stage: build
script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'yarn install'
- docker exec -i DEV-%PROJECT_NUM% bash -c 'gulp'
cache:
paths:
- www/node_modules/
artifacts:
paths:
- %PATH_TO_BUILD%
expire_in: 1 day
migrations:
.migrations:
stage: build
script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'composer update'
- docker exec -i DEV-%PROJECT_NUM% bash -c 'php migrator migrate'
cache:
paths:
- www/vendor/
deploy:
stage: deploy
script:
- echo 'Get all artifacts from previous stages, so site working properly'
.restore_bitrix:
stage: build
......@@ -51,6 +62,13 @@ migrations:
.backup_bitrix:
stage: build
script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'tar -czf bitrix.tar.gz bitrix/ upload/'
- docker exec -i DEV-%PROJECT_NUM% bash -c 'mv bitrix.tar.gz /home/bitrix/backup/'
- tar -czf bitrix.tar.gz bitrix/ upload/
- mv bitrix.tar.gz /tmp/
variables:
GIT_STRATEGY: none
artifacts:
paths:
- www/bitrix/
- www/upload/
expire_in: 1 day
when: manual
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment