Creating CI / CD infrastructure for open source projects. Speaker: Denis Soldatov
В данном выпуске DevOps Parity Technologies Денис Солдатов расскажет о возможных проблемах разработки и доставки готового кода на примере проекта Parity.
Изначально Parity Technologies занимались разработкой кошелька для экосистемы Ethereum. Для создания структуры сборки кошелька команда компании решила следующие задачи:
- Распределенность команды
Код проекта размещен на Github и изменения в коде требует сборки нового бинарного файла. Учитывая факт того, что команда компании распределена по всему миру, это доставляет некоторые неудобства. По этой причине в код были внесены определенные изменения для оперативной сборки бинарного файла
- Кроссплатформенность
Для решения данной задачи команда собирала код на языке программирования Rust, который обладает следующими характеристиками:
- Поддержка кроссплатформенности, многозадачности
- Предполагает высокую скорость сборки
Со временем код накапливал функциональность и как следствие, возникли проблемы с тестированием и лицензированием продукта. По данной причине команда начала изучение возможностей, которые предоставляют системы интегрирования и протестировала некоторые из них.
Системы, которые были апробированы
- Travis CI Enterprice (Linux + MacOS)
Сервис хорошо функционирует и настраивается, но нет Windows
- AppVeyor (Windows)
Дорогая лицензия
- Jenkins
Необходимо писать много скриптов
- Drone CI
Нет полной поддержки языка Rust
- Gitlab CI
Команда остановилась именно на этой системе
Gitlab поддерживает аналогичные функции Github, но Gitlab еще включает интеграцию и доставку конечной продукции.
Отметим используемые инструменты:
- язык Rust
- Node JS
- Github
- Gitlab
Какая в итоге получается цена за обслуживание:
- Оплата аренда сервера - 60 $
- Оплата аренды Windows и MacOS - 100 $
Перспективы компании:
- Расширились возможности для сборки нескольких проектов
- Повышение гибкости и масштабируемости
Результат работы команды:
- Полный контроль над процессом сборки
- Дешевая система сборки для контента
- Кроссплатформенность
- Лицензионная чистота
- Контроль сборки “одно окно”
Если вам интересно, присоединяетесь к проекту, команде