Авторизация
Новости компании
Отзывы
CI/CD интеграция сайта из GitLab по FTP
Ранее уже описывал как настроить CI/CD интеграцию своего сайта из GitHub репозитория на сервер CI/CD интеграция сайта из GitHub по FTP
Из указанной статьи можно взять описание структуры проекта, дальше же, с GitLab все гораздо чем с GitHub.
При работе с GitLab не нужно устанавливать Jenkins и подобные инструменты для сборки проекта, у GitLab уже есть свои сервера с докерами и пайплайны запускаются и отслеживаются прямо в их вэб интерфейсе.
Для старта CI/CD интеграции нужно просто создать файл .gitlab-ci.yml в корне проекта. Для более быстрого понимания и создания его содержимого можно использовать шаблон, для этого переходим в свой проект, раздел CI/CD -> Pipelines и выбираем подходящий для проекта шаблон, например Nodejs, указываем ветку репозитория для пайплайна и жмем кнопку Commit changes.
В файл .gitlab-ci.yml будут добавлены настройки просто для прогона пайплайнов и вывода сообщений, чтобы что-то компилировалось нужно добавить команды в раздел
script:
Перед этим в начало файла или перед stages: нужно добавить нужную версию окружения, в случае Nodejs:
image: node:latest
либо указать конкретную версию:
image: node:10.24.1
Затем уже добавляем команды:
install-job: stage: install script: - npm i - echo "npm install completed"
Шаг создания билда может выглядеть так:
build-job: stage: build script: - echo "Compiling the code..." - npm i - npm run build - echo "Compile complete."
Вышеуказанные скрипты выглядят просто, но самое интересное это деплой проекта, то есть загрузка его по FTP, для этого можно использовать lftp и перед этим его сначала нужно установить и затем уже запустить в верном синтаксисе, общий вид стейджа выглядит так:
deploy-job: # This job runs in the deploy stage. stage: deploy before_script: - npm i - npm run build - echo "Installing lftp..." - apt-get update -qy - apt-get install -y lftp script: - echo "lftp installed. Deploying application..." - lftp -e "open [ip или домен]; user $USER $PASS; mirror -X .* -X .*/ --reverse --verbose --delete build/ public_html/; bye" - echo "Application successfully deployed."
Вместо $USER и $PASS можно не указывать логин пароль открыто, особенно если у вас публичный репозиторий. Для этого на GitLab нужно перейти в CI/CD проекта и в разделе Environment variables добавить эти переменные без знака $, для пароля лучше переключить в Protected.
mirror с параметром --reverse не зеркалит данные с сервера, а загружает их на сервер, с помощью параметра -x dir можно исключить папку из загрузки
mirror -x assets/
Для загрузки одного файла проще использовать команду put:
put server.js
После создания всех нужных стейджей нужно проверить, чтобы их названия присутствовали в блоке stages:
в верном порядке
stages: # List of stages for jobs, and their order of execution - install - test - build - deploy