The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
AppVeyor - это отличный облачный сервис непрерывной интеграции, который собирает проекты для Windows. Rultor - это помощник DevOps, который автоматизирует операции по выпуску, слиянию и развертыванию с использованием контейнеров Docker. В этих сообщениях объясняется, как работает Rultor и для чего он предназначен: Rultor.com, Merging Bot и ветка Master должна быть только для чтения.
Проблема в том, что Rultor выполняет все скрипты в контейнерах Docker, а Docker не может собирать проекты для Windows. Единственное и наилучшее логическое решение - запускать AppVeyor перед выполнением всех остальных скриптов в Docker. Если AppVeyor дает зеленый свет, мы продолжаем со стандартным скриптом внутри Docker. В противном случае, сборка полностью завершается неудачей. Ниже я объясняю, как была настроена эта автоматизация в фреймворке Takes.
Сначала я получил токен из своего аккаунта AppVeyor (на момент написания он находился здесь). Я создал текстовый файл curl-appveyor.cfg
с таким содержимым (это не мой настоящий токен, только пример):
Затем я зашифровал этот файл с помощью инструмента командной строки rultor
.
Файл, который я создал, назывался curl-appveyor.cfg.asc
. Я сделал коммит и отправил в репозиторий GitHub yegor256/takes.
Затем я настроил “pinging” AppVeyor из скрипта Docker. Вот что я сделал в .rultor.yml
:
Здесь нет магии, всё очень просто. Сначала я запускаю новую сборку, используя конечную точку /api/builds
REST API AppVeyor. ${pull_id}
- это переменная окружения, которая приходит из Rultor и содержит целое число текущего запроса на слияние.
Я использую jq для парсинга вывода JSON AppVeyor.
После запуска сборки я получаю её уникальный version
и начинаю циклически проверять её статус. Я жду success
или failed
. Всё остальное означает, что сборка всё ещё выполняется, и мне следует продолжать цикл.
Вы можете посмотреть, как это работает в этом запросе на слияние, например: yegor256/takes#93.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:48