refactor(ci): update jobs and stages

parent d4fe2e47
# Docker Compose конфиг для Bitrix # 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`: 1. Поправить `docker-compose.yml`:
...@@ -13,7 +46,7 @@ ...@@ -13,7 +46,7 @@
* Подключить раннер `111-DEV-HST` * Подключить раннер `111-DEV-HST`
* Переименовать `gitlab-ci.yml` в `.gitlab-ci.yml` для работы CI * Переименовать `gitlab-ci.yml` в `.gitlab-ci.yml` для работы CI
3. **Last but not least**. Для PHPStorm и других IDE от Jetbrains следует отключить папку `db` от индексации(!!!), чтобы она не влияла на производителность! 3. Настроить сборщик и указать директорию с собранными файлами в `.gitlab-ci.yml` (заменить вместо `%PATH_TO_BUILD%`)
## Запуск ## Запуск
......
stages: stages:
- startup - startup
- build - build
- deploy
cache:
untracked: true
paths:
- www/bitrix/
- www/upload/
- www/vendor/
- www/node_modules/
save_user_data: save_user_data:
stage: startup stage: startup
...@@ -16,8 +9,11 @@ save_user_data: ...@@ -16,8 +9,11 @@ save_user_data:
- echo 'Create artifacts for Bitrix core' - echo 'Create artifacts for Bitrix core'
variables: variables:
GIT_STRATEGY: none GIT_STRATEGY: none
cache:
paths:
- www/bitrix/
- www/upload/
artifacts: artifacts:
untracked: true
paths: paths:
- www/bitrix/ - www/bitrix/
- www/upload/ - www/upload/
...@@ -28,17 +24,32 @@ startup: ...@@ -28,17 +24,32 @@ startup:
script: script:
- docker-compose up -d - docker-compose up -d
build_assets: .build_assets:
stage: build stage: build
script: script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'yarn install' - docker exec -i DEV-%PROJECT_NUM% bash -c 'yarn install'
- docker exec -i DEV-%PROJECT_NUM% bash -c 'gulp' - 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 stage: build
script: script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'composer update' - docker exec -i DEV-%PROJECT_NUM% bash -c 'composer update'
- docker exec -i DEV-%PROJECT_NUM% bash -c 'php migrator migrate' - 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: .restore_bitrix:
stage: build stage: build
...@@ -51,6 +62,13 @@ migrations: ...@@ -51,6 +62,13 @@ migrations:
.backup_bitrix: .backup_bitrix:
stage: build stage: build
script: script:
- docker exec -i DEV-%PROJECT_NUM% bash -c 'tar -czf bitrix.tar.gz bitrix/ upload/' - tar -czf bitrix.tar.gz bitrix/ upload/
- docker exec -i DEV-%PROJECT_NUM% bash -c 'mv bitrix.tar.gz /home/bitrix/backup/' - mv bitrix.tar.gz /tmp/
variables:
GIT_STRATEGY: none
artifacts:
paths:
- www/bitrix/
- www/upload/
expire_in: 1 day
when: manual 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