Пример конфигурации файла .gitlab-ci.yml в проекте gitlab для сборки приложения nodejs при помощи rsync. Суть в том что бы при отправке ветки в репозитарий gitlab происходила выгрузка проекта на удалённый сервер из локального gitlab, с последующей сборкой и перезапуском pm2
Полный код конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
coderun_prod: stage: deploy tags: - master only: - master script: - sshpass -p $SSH_PSWD rsync --exclude '.git' --exclude '.gitlab-ci.yml' --exclude '.git' --exclude '.log' -vzhr --progress . $SSH_USER@$SSH_SERVER:/home/admin/web/coderun.ru/app - sshpass -p $SSH_PSWD ssh $SSH_USER@$SSH_SERVER -p22 /usr/bin/npm install --prefix /home/admin/web/coderun.ru/app #установка зависимостей - sshpass -p $SSH_PSWD ssh $SSH_USER@$SSH_SERVER -p22 /usr/bin/npm run build --prefix /home/admin/web/coderun.ru/app #сборка - sshpass -p $SSH_PSWD ssh $SSH_USER@$SSH_SERVER -p22 /usr/bin/pm2 reload 0 #перезапуск # - rm -rf * .* # очистка папки гитлаб-рунера |
Коротко по файлу конфигурации:
— stage Название стадий сборки. Таких стадий может быть много, именовать можно как угодно
— tags Тэги на которые «натравлен» обработчик сервера gitlab. Обработчик(рунер или бегунок) создаётся через консоль сервера
— script В данном случае вся магия сборки. В script может быть описано всё что угодно (тестирование, сборка и т.д)
Описание про команды script:
- Переменные $SSH_PSWD,$SSH_SERVER,$SSH_USER — содержат пароль, адрес сервера и логин
- sshpass — консольная программа Linux для выполнения команд на удалённом сервере
- rsync — консольная программа Linux для синхронизации данных локального хранилища с удалённым сайтом
При начале работы секции script в каталоге локального сервера появляются файлы из ветки master вашего проекта (это делает gitlab по умолчанию). Далее все команды которые выполняются подразумевают что вы находитесь в каталоге с файлами ветки.
Другой пример деплоя в нашем блоге