Skip to content
This repository has been archived by the owner on May 11, 2021. It is now read-only.
/ shri-ci Public archive

Simple continuous Integration system

Notifications You must be signed in to change notification settings

vaiil/shri-ci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shri-ci

Simple continuous Integration system

Точно работает на Ubuntu, на windows точно есть проблемы (и с запуском, и с работой) из-за ее cmd.

Установка:

git clone https://github.com/vaiil/shri-ci.git vail-shri-ci
cd vail-shri-ci
npm --prefix ./server i

Агент устанавливать не нужно, так как он устанавливается в докер-контейнере.

Запуск сервера

npm --prefix ./server start

Параметры:

  • Порт (--port или env.PORT), по умолчанию 3000
  • Репозиторий (--repo или env.REPO), по умолчанию текущий (https://github.com/vaiil/shri-ci.git)

Запуск агента

npm --prefix ./agent run build-docker-image
npm --prefix ./agent start -- --port 3001

Параметры:

  • Порт (--port или env.PORT), по умолчанию 3000
  • Host агента (--host или env.HOST), по умолчанию 'localhost'
  • URL сервера (--server или env.SERVER_URL), по умолчанию текущий (http://localhost:3000)

Пару слов о докере

Агент запускается в докере (сервер нет), используя сеть хост-машины для общения с сервером.

Особенности реализации

При запуске сервер создает следущие сущности:

  • Список агентов
  • Список билдов
  • Очередь отложенных задач (те которые, не могут быть сейчас запущены, так как нет свободных агентов)
  • Хеш таблицу запущенных задач

При запуске агент обращается на ручку сервера, тем самым регистрируясь в списке. При ошибке подключения к серверу, агент завершает свою работу с выводом данных об ошибке в консоль.

При добавлении задачи, сервер проверяет наличие свободных агентов и если их нет помещает задачу в отложенные. В ином случае, отправляет задачу агенту и заносит задачу в хеш-таблицу запущенных задач. В случае ошибки подключения к агенту, сервер возвращает задачу в отложенные, а агента помечает как проблемного. Для возврата к состоянию "готов к работе" агент должен заново отправить серверу данные о себе.

Также сервер проверяет агента на котором запущенна задача на его доступность (пингует). Агент должен отдать id последней запущенной задачи. В ином случае агент считается что в работе произошла ошибка, задача возвращается в очередь, агент помечается как проблемный.

После завершения задачи, агент сообщает об успехе серверу, передавая информацию по билду. В этот момент сервер возвращает агенту статус готов к работе, ищет задачу запустившую билд, сохраняет ее в билд, удаляет задачу из запущенных и добавляет билд в список билдов.

Очередь задач разбирается новыми и вновь освободившимися агентами.

About

Simple continuous Integration system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published