Как стать автором
Поиск
Написать публикацию
Обновить

Собираем в rpm WireMock — утилиту для создания заглушек над веб-сервисами в Fedora COPR аналоге PPA в Ubuntu

Время на прочтение3 мин
Количество просмотров7.9K

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 коды. Исходники тут.

Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Публикации

Ближайшие события