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, он делает именно это:
Получает команду автоматического выполнения сборки из него, например,
bundle test
.Переносит ваш репозиторий во временную директорию на одном из своих серверов.
Сливает запрос на объединение ветки (
pull request
) в веткуmaster
.Запускает новый Docker контейнер и выполняет в нем команду
bundle test
.Если все в порядке, отправляет измененную ветку
master
на GitHub.Отчеты возвращаются вам в запрос на извлечение GitHub.
Вы можете увидеть это в действии, например, в этом запросе на внесение изменений (pull request): jcabi/jcabi-github#878.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-16 at 15:36