Эта заметка о том, как я разворачивал CI для около-железячных софтовых проектов и каких проблем я огреб с этим безобразием, пока добился рабочего (хоть и при помощи лома и мата) решения. Возможно даже первая из серии.
Начнем с проблемы. Совсем просто, на случай если это читают дети. У нас есть несколько software проектов. Нам надо периодически делать следующие рутинные действия:
- Собрать проект и проверить, что он вообще собирается где-то, кроме ноутбука разработчика
- Прогнать unit-test’ы (Ведь мы же не ленимся писать unit-test’ы, не так ли?)
- Собрать deb-пакеты, и загрузить куда-нибудь, чтобы пользователи были счастливы
Казалось бы, все давно отлажено, есть OpenSuse Build Service / Open Build Service, Travis, Jenkins. Есть такие страшные штуки как sbuild, schroot и целый выводок утилит от debian-разрабов и просто классных людей, какие могут проблемы? Как всегда, дьявол в деталях. Сразу предупреждаю — текста будет много.