WireMock — утилита, библиотека на java для создания заглушек над веб-сервисами. Он создает HTTP-сервер, к которому мы могли бы подключиться, как к реальному веб-сервису.
Fedora COPR — это бесплатный хостинг для размещения пользовательских репозиториев (аналог AUR в Arch Linux или PPA в Ubuntu). Из особенностей встроенная возможность собирать rpm пакеты указав имя PIP и RubyGems.
В этом посте напишу как собирать rpm из вашего репозитория по коммиту в Fedora COPR.
Для примера возьмем репозиторий wiremock-rpm, в котором я создал файлы spec и systemd unit. При создании вашего репозитория, вы можете взять wiremock-rpm за основу и поменять то что вам нужно. Написание файлов spec и systemd unit я опускаю. Думаю что вы знаете.
Создание проекта в Fedora COPR
Заходим в Fedora COPR.
Project Name: Указываем название пакета. Обычно совпадает с названием вашего git репозитория.
Description: Краткое описание проекта.
Instructions: Как установить ваш пакет. Указывайте следующее:
yum -y install yum-plugin-copr yum copr enable ваша-учетка-в-fedora-copr/название-проекта yum -y install название-пакета systemctl start название-пакета
Homepage: Указываем домашнюю страницу той программы, которую вы хотите собрать или ваш репозиторий.
Build options: В Chroots указывем под какую оперционную систему вы хотите собрать пакет.
Получается как на скриншоте.
Other options: Если вам нужен интернет, то в Booleans поставьте галочку Enable internet access during builds
После создания проекта переходим в Packages.
Package name: Указываем имя пакета.
Clone url: Указываем git репозиторий.
Subdirectory: Этим пунктом лучше не пользоваться и держать исходники и spec файл в корне проекта. Если у вас будут исходники в какой-то директории, а spec файл в другой директории, возможны проблемы при сборке.
Spec File: Путь до spec файла.
Generic package setup: Обязательно поставьте галочку Auto-rebuild
После того как создали пакет идем в Settings, далее в Integrations. Ниже на странице копируем webhook той системы, где у вас расположен ваш git репозиторий.
Идем в Settings где у вас расположен ваш git репозиторий. Далее для github идем в webhook. Добавляем webhook. Вставляем Payload URL, выбираем Content type application/json
Теперь про WireMock.
Установим wiremock согласно инструкции. Рабочая директория wiremock в моем проекте — /usr/lib/wiremock
/. В этой директории лежит wiremock.jar и директория mappings. В директории mappings находятся json файлы с запросами, которые вы отправляете к wiremock и подготовленными ответами.
Пример из http://wiremock.org/docs/running-standalone/:
{ "request": { "method": "GET", "url": "/api/mytest" }, "response": { "status": 200, "body": "More content\n" } }
Отправляем запрос к /api/mytest и получаем:
curl http://localhost:8080/api/mytest More content
Пример из моих подготовленных json:
{ "request": { "method": "GET", "url": "/503" }, "response": { "status": 503, "body": "503 Service Unavailable\n" } }
Сделаем запрос к /503
curl -i -v 172.26.9.123:8080/503 * About to connect() to 172.26.9.123 port 8080 (#0) * Trying 172.26.9.123... * Connected to 172.26.9.123 (172.26.9.123) port 8080 (#0) > GET /503 HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 172.26.9.123:8080 > Accept: */* > < HTTP/1.1 503 Service Unavailable HTTP/1.1 503 Service Unavailable < Matched-Stub-Id: d8b419e1-7e33-4f04-889e-2428f849dc7d Matched-Stub-Id: d8b419e1-7e33-4f04-889e-2428f849dc7d < Transfer-Encoding: chunked Transfer-Encoding: chunked < Server: Jetty(9.2.z-SNAPSHOT) Server: Jetty(9.2.z-SNAPSHOT) < 503 Service Unavailable
В rpm wiremock добавил популярные http коды. Исходники тут.
ссылка на оригинал статьи https://habr.com/ru/post/476260/
Добавить комментарий