- PVSM.RU - https://www.pvsm.ru -
Возникла передо мной такая задача: тестирование debian пакета. И требования:
Тестирование должно включать в себя:
Как обычно, первым делом необходимо оглядеться по сторонам и поискать уже существующие решения и подходы. Системе Debian уже 20+ лет и я не должен быть первым, кому пришло в голову тестирование пакетов. Поэтому я провел небольшое исследование экосистемы и получил следующее:
Итак, в центре тестирования любого debian пакета находится autopkgtest. Это по сути набор правил для сборки и набор скриптов для запуска тестов. Более детально о том, как писать такие тесты и конфигурировать сборку пакетов можно почитать в официальной документации [1].
debci [2] — это официальная [3] система для тестирования пакетов. Используется самим сообществом debian для continuous integration релизов. Представляет собой набор сервисов, которые общаются между собой через rabbitmq:
Идеально подходит для моей задачи, поэтому я решил глубоко разобраться с системой и настроить. Наибольшую сложность доставила настройка debci-worker:
Методом проб и ошибок я поднял debci и понял следующее:
Представляет собой скрипт для travis-ci [7], который создаёт docker образ, который внутри себя запускает сборку проекта и autopkgtest. Из положительных моментов:
Чего не хватает:
Итак, всё-таки ничего не подошло. В принципе, после достаточно продолжительного исследования, уже становится понятно, что нужно:
Мне удалось [9] собрать такую конфигурацию. Но дьявол, как обычно, в деталях, поэтому я приведу здесь наиболее яркие wtf:
Автор: dernasherbrezon
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/267482
Ссылки в тексте:
[1] официальной документации: http://packaging.ubuntu.com/ru/html/auto-pkg-test.html
[2] debci: https://github.com/terceiro/debci
[3] официальная: https://ci.debian.net
[4] хостинг: https://www.reg.ru/?rlink=reflink-717
[5] получилось: https://www.scaleway.com
[6] офциальной документации: https://github.com/terceiro/debci/tree/master/docs
[7] travis-ci: http://travis-ci.org/
[8] maven: https://github.com/dernasherbrezon/deb-maven-plugin
[9] удалось: https://travis-ci.org/dernasherbrezon/r2cloud/builds/296993677
[10] PID 1 проблему: https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
[11] resin: https://resin.io
[12] помочь: https://docs.resin.io/runtime/resin-base-images/
[13] Источник: https://habrahabr.ru/post/341674/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.