CI/CD сервер на node.js
Сервис предназначен для автоматизации сборки и развертывания проектов на рабочих площадках.
При неудачных сборках проекта происходит автоматический сброс изменений до последнего комита удачной сборки.
Настройка
Сервер необходимо расположить на сервере с https, иначе не удастся настроить github webhook.
Запустить работу сервиса можно командой
npm run serve
Регистрация проекта
После запуска сервиса можно регистрировать проекты используя API сервиса.
Метод | Роут | Описание |
---|---|---|
GET |
project | Получение конфигурационного файла |
POST |
project/register | Регистрация нового проекта |
POST |
project/update | Обновление полей проекта |
Пример запроса на регистрацию проекта
{
"project": "testProject",
"git": "https://github.com/username/project.git",
"notificationEmails": [
"test@gmail.com"
],
"privateParam": {
"prodPass": "bxw5s222rGEU",
"userName": "root"
}
}
project
- Код вашего проектаgit
- Ссылка на git репозиторий ващего проектаnotificationEmails
- Массив email адресов для оповешения о процессе сборки ваших проектовprivateParam
- Приватные параметры для подстановки в локальный конфиг вашего проекта
Пример запроса на обновление полей проекта
Попробуем поменять приватный параметр prodPass
и userName
{
"project": "testProject",
"updatedParams": {
"privateParam": {
"prodPass": "bxwsr5544433GEU",
"userName": "www-data"
}
}
}
Обращаю внимание на то, что каждое поле, переданное в updatedParams
, полностью
заменяет собой существующее значение.
Пример запроса на получение актуального конфига проекта
https://someurl.com/project?project=testProject
Настройка проекта для работы с CI/CD сервисом
В корне подключаемого проекта необходимо создать файл project.conf.json
в следующем формате
{
"name": "Тестовый проект",
"code": "testProject",
"targets": [
{
"branch": "master",
"deploy": {
"ssh": {
"host": "194.87.91.254",
"pass": "#prodPass#",
"port": 22,
"username": "#userName#",
"cwd": "/var/www/html"
},
"command": "npm run production"
},
"testCommand": "npm run test"
}
]
}
Обо всех полях по порядку:
name
- Название вашего проектаcode
- Код проекта (его указываем для получение конфига в /project)targets
- Здесь указываем массив целевых веток для сборки (за ними и будет следить сервис)
Поля для targets
:
branch
- Ветка проекта, изменения которой нужно отслеживатьdeploy
- Данные для подключения к удаленному серверу, на которой будет происходить деплой. Вdeploy.ssh
помимо обычных данных подключения можно указать приватные параметры. Указывая параметр в формате #paramName# мы скрываем данные подключение из публичного доступа. Для установки значений этих параметров восполузуйтесть полемprivateParam
при регистрации проекта в системе.deploy.command
- Команда для запуска cборки и деплоя проектаtestCommand
- Команда для запуска тестов на проекте (опционально)
Данный конфиг нужно занести под git.
Настройка webhook на github.com
На странице настроек репозитория указываем url адрес CI/CD сервера на роут /webhook
При выполение всех условий настроек проекта, при обновлении нужной ветки вашего репозитория, вы получите инструмент автоматической сборки ваших проектов.