На самом деле деплой сайта Bitrix или любого другого php сайта ни чем не отличается, ниже приведёт пример конфигурации CI/CD отправки проекта из вашего gitlab на удалённый хостинг:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
deploy_test2.b2: # Параметры сборки для сайта test2 stage: deploy tags: - test2b2 only: - test2_prod script: - sshpass -p $TEST2_PWD rsync -vFFPcHltr --progress -O . --omit-dir-times . $TEST2_USER@$TEST2_SERVER:www/test2.b2 deploy_test1.b2: # Параметры сборки для сайта test1 stage: deploy tags: - test1b2 only: - test1_prod script: - sshpass -p $TEST1_PWD rsync -vFFPcHltr --progress -O . --omit-dir-times . $TEST1_USER@$TEST1_SERVER:www/test1.b2 deploy_prod: # Параметры сборки для боевого сайта stage: deploy tags: - prod only: - master script: - sshpass -p $PROD_PWD rsync -vFFPcHltr --progress -O . --omit-dir-times . $PROD_USER@$PROD_SERVER:. # rsync Ключи: # v - расширенный вывод # FF - использовать файл .rsync-filter и не копировать вообще файлы из этого конфига # c - Пропускать файлы на основе контрольных сумм, а не времени модификации # H - Сохранять Жёсткие ссылки # l - Копировать символические ссылки как символические # t - Сохранять время модификации # r - рекурсивно # -O . --omit-dir-times - Для каталога "." - не пытаться установить время модификации |
В конфигурационном файле .gitlab-ci.yml, содержимое которого описано выше, должен располагаться в корне вашего проекта GitLab.
Данный файл конфигурации содержит параметры сборки сразу для трёх проектов, отправка на удалённый сервер происходит через rsync
Некоторые параметры:
- only — Имя ветки на изменения в которой будет реагировать сборщик. Так у нас имеется три разные ветки для проектов test1_prod, test2_prod и master. Если мы будем пушить в одну из этих веток, то и сборка будет осуществляться только для конфигурации с этой веткой
- tags — Ещё один параметр отвечающий за сборку. На этот параметр реагирует или не реагирует серверный gitlab-runner созданный заблоговременно
- script — команды выполняемые в качестве сборки. В нашем случае это выгрузка на удалённый сервер через rsync
$PROD_PWD, $PROD_USER, $PROD_SERVER — переменные заданные в GitLab Настройка — CI/CD — Environment variables