Rultor.com, a Merging Bot

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Вы получаете запрос на слияние (pull request) в GitHub. Вы его проверяете. Выглядит верно - пришло время объединить его с master. Вы оставляете комментарий в нем, просите @rultor протестировать и объединить. Rultor запускает новый контейнер Docker, сливает запрос на слияние в master, запускает все тесты и, если все выглядит чисто, осуществляет слияние, пушит и закрывает запрос.

Затем вы просите @rultor развернуть текущую версию в производственной среде. Он проверяет ваш репозиторий, запускает новый контейнер Docker, выполняет ваши скрипты развертывания и сообщает вам об этом прямо в задаче на GitHub.

На рынке существует множество инструментов, автоматизирующих непрерывную интеграцию и непрерывную доставку (давайте назовем их DevOps). Например, загружаемая из открытых источников Jenkins и веб-сервис Travis выполняют эти задачи. Итак, зачем нам еще один?

Что ж, у нас есть три очень важные функции, которые нам необходимы для наших проектов, но мы не можем найти все из них в каком-либо из доступных на рынке инструментов DevOps.

  • Docker. Каждая сборка должна работать в своем собственном контейнере Docker, чтобы упростить настройку, изолировать ресурсы и легко воспроизводить ошибки.

  • Разрешить vs. Активировать. Нам необходимо взаимодействовать с инструментами DevOps с помощью команд, прямо из нашей системы отслеживания проблем (в большинстве проектов это GitHub issues). Все существующие системы DevOps активируют сборки при определенных условиях. Нам нужно, чтобы наши разработчики могли взаимодействовать с инструментом, используя команды, похожие на человеческий язык, в задачах, над которыми они работают.

Сочетание этих трех функций - то, что отличает Rultor от всех других существующих систем.

Когда Rultor находит команду на объединение в одном из ваших запросов на вытягивание GitHub, он делает именно это:

  1. Получает команду автоматического выполнения сборки из него, например, bundle test.

  2. Переносит ваш репозиторий во временную директорию на одном из своих серверов.

  3. Сливает запрос на объединение ветки (pull request) в ветку master.

  4. Запускает новый Docker контейнер и выполняет в нем команду bundle test.

  5. Если все в порядке, отправляет измененную ветку master на GitHub.

  6. Отчеты возвращаются вам в запрос на извлечение GitHub.

Вы можете увидеть это в действии, например, в этом запросе на внесение изменений (pull request): jcabi/jcabi-github#878.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-16 at 15:36

sixnines availability badge   GitHub stars