Continuous integration для C++ разработчика RU

Дата: 18 апреля 2019

Место: Москва, адрес уточняется

Назад к тренингам
Павел Филонов — Лаборатория Касперского

Павел Филонов
Лаборатория Касперского

Более 5 лет занимается разработкой ПО в области информационной безопасности. Более 3-х лет активно использует методы анализа данных для разработки и внедрения методов машинного обучения в ИБ. До начала карьеры разработчика занимался исследованиями в области радиофизики и преподаванием в высшей школе.

Описание тренинга

А мы построим свой CI с Conan и Travis

Непрерывная интеграция

Непрерывной интеграцией называют практику, по которой разработчики периодически (читай: ежедневно) вливают результаты своей работы в основную ветку кода. Впервые данная практика была предложена в методе Буча. Позднее в методологии экстремального программирования она обросла автоматическим прогоном модульных тестов. Своё дальнейшее развитие данная практика получила в виде непрерывной доставки (CD, англ. Continuous delivery) — процесса, в ходе которого после прохождения приёмочных тестов автоматически собирается дистрибутив, готовый к отгрузке заказчику. И уже в самом конце можно говорить об непрерывном развертывании (CD, англ. Continuous deployment), в ходе которого все изменения, прошедшие тестирование, автоматически отправляются в продакшн. Если вы уже запутались, то можете представить себе следующую последовательность:

  1. Continuous integration
  2. Continuous delivery
  3. Continuous deployment

В рамках данного мастер-класса мы будет говорить о CI применительно к разработке на C++.

Предварительные требования

От вас нужно:

  • умение программировать на C++ (спасибо, Кэп!)
  • laptop c любой ОС
  • один из компиляторов: Visual Studio >= 2015, g++ >= 5.4, clang++ >= 3.9, Xcode >= 8.0
  • CMake >= 3.6 (нужно понимать синтаксис CMakeLists.txt)
  • Git >= 2.10
  • Python >= 3.5
  • pip3 >= 9.0
  • учетная запись на github.com
  • учетная запись на travis-ci.org (привязанная к github)
  • учетная запись на appveyor.com (привязанная к github)
  • учетная запись на conan.io
  • учетная запись на digitalocean.com

Часть первая — GitHub

В первой части будем предполагать, что вы пишете домашний проект, работаете над open source или можете хранить исходные коды на стороннем ресурсе и готовы за это заплатить.

Какие задачи вы научитесь решать:

  • как автоматизировать сборку под Linux и Mac OS с помощью Travis CI
  • как автоматизировать сборку под Windows с помощью AppVeyor
  • как управлять зависимостями с помощью Conan
  • как автоматизировать запуск модульных тестов под все платформы
  • как автоматически собирать с разными конфигурациями и версиями компиляторов
  • как создавать собственные пакеты для Conan (первый шаг к CD)

Часть вторая — self-hosted GitLab

Во второй части мы рассмотрим ситуацию, когда у вас рабочий проект с закрытым исходным кодом и вы не хотите сильно зависеть от неподконтрольной инфраструктуры (vendor lock).

Какие задачи вы научитесь решать:

  • как быстро развернуть GitLab на DigitalOcean (DO)
  • как настроить GitLab CI для вашего проекта

Наши контакты