CI/CD UNDERMICROSCOPE
KIRILLOV ALEXANDER
СЕГОДНЯ Я НЕ БУДУ…рассказывать зачем тестировать проектыдоказывать что тесты нужныобъяснять что такое CI/CDнудеть про Docker и какой он крутой… но про контейнеры будет много
РОЛЬ CI/CD В СОВРЕМЕННОЙРАЗРАБОТКЕ ПО
КАКОЙ ВЫБРАТЬ?
SELF HOSTEDнужно больше машин…… и они у меня естьу меня очень секретный проект>.<
SAASочень просто начатьне нужно настраиватьесли что-то сломается, вам починятнагрузки? Да, мы держим!
А ЧТО ВНУТРИ?
ЭТО ДОЛЖНО БЫТЬ У ВСЕХРаспределенная архитектураВозможность конфигурирования проектаПоддержка различных языков и окруженийИнтеграции (нотификации, источники данных)Управление зависимостями (пакеты, сервисы,дополнения)Кэширование артефактов
JENKINSнаверное, самый популярныйHudson (привет, Oracle)
АРХИТЕКТУРА (ОСНОВНЫЕ ЧАСТИ)
АРХИТЕКТУРА (MASTER/SLAVE)
ВОЗМОЖНОСТИможно запустить практически все что угоднолегко(?) масштабируетсяобширная экосистема модулей (> 1000)заточен под enterprise
$0, opensource
ОГРАНИЧЕНИЯзапуск на платформе хоста (но не все потеряно)установка зависимостейверсионирование пакетовКонфигурация через GUI
СКРИНШОТ
TEAMCITY
АРХИТЕКТУРАBuild serverAgents…кое-кто запускает в контейнерах :troll
ОСОБЕННОСТИНастраивается через графический интерфейсПоддерживает шаблоны для создания проектовПлатформо- и языконезависимые агентыМожно устанавливать виновных >.<Интеграция с различными IDE… и еще много интеграций и плагинов
20 builds, 3 agent - freeразличные лицензии (от $299)
СКРИНШОТ
TRAVISCI
АРХИТЕКТУРА
АРХИТЕКТУРА (ПО-КОМПОНЕНТНО)
ОСОБЕННОСТИодин из наиболее активных сервисовповернулись в сторону контейнеровмультиплатформенность (mac включен!)
free, $129 Startup (2cc job)
КОНФИГУРАЦИЯlanguage: ruby rvm: - 1.9.2 - jruby-18mode - jruby-19mode - jruby-head jdk: - openjdk6 - openjdk7 - oraclejdk7 matrix: exclude: - rvm: 1.9.2 jdk: openjdk6 - rvm: 1.9.2 jdk: openjdk7 - rvm: 1.9.2
СКРИНШОТ
VEXOR.IO
АРХИТЕКТУРАВсе есть контейнерыWeb, BuildServerWorkers [1..N]LoggerRabbitMQBaseImage - множество уже готовых сервисов
ОСОБЕННОСТИПоддержка языков и фреймворковПараллелизм тасковПоминутная оплатаПоддержка конфигов .travis.ymlDebug with ssh (!)
100 mins free, $0.015 per minute
СКРИНШОТ
CIRCLECI
АРХИТЕКТУРАDocker… кто-ж нам расскажет? ;)
ОСОБЕННОСТИЗапуск в контейнерахПредустановка своих пакетовПараллелизм тасковDebug with ssh (!)Можно тестировать iOS и OSX проекты
1 free container, $50 per container
СКРИНШОТ
DRONE.IO
АРХИТЕКТУРАмонолитный (единый бинарник, привет Golang)RemoteDrivers (Bitbucket, GitHub, GitLab, Gogs)Базы данных (основная тройка)Окружение тестов: контейнеры
ВОЗМОЖНОСТИпрактически не требует настройкине зависит от окружения"взлетает" везде где есть Dockerрасширяется дополнениями
free, $25 Started (5 private repos)
КОНФИГУРАЦИЯYAMLхранится внутри проектарасширяется дополнениями
build: image: golang commands: - go get - go build - go test
КОНФИГУРАЦИЯ (ПОСЛОЖНЕЕ)cache: mount: - /drone/.ivy
build: image: 1science/sbt:0.13.8-oracle-jre-8 commands: - sbt clean test assembly -Dsbt.ivy.home=/drone/.ivy
publish: docker: username: kevinbacon password: pa55word email: [email protected] repo: demos/drone-with-scala tag: $$BRANCH
СКРИНШОТ
PIPELINES PROCESSINGConcourseCiGo.CD
GO.CD
АРХИТЕКТУРА
ВОЗМОЖНОСТИ
СКРИНШОТ
КАКОЙ МНЕ ВЫБРАТЬ?
НЕБОЛЬШОЙ ВЕБ-САЙТПара разработчиков, мануальное тестированиеМонолитный проект, нераспределенныйНечастые релизы/деплои (1-2 раза в месяц)довольно простой деплой
Любой бесплатный или недорогой SaaS
МОЛОДОЙ СТАРТАПСформировавшаяся команда с разеделением задачЧасто меняющаяся архитектура (языки/фреймворки/технологии)Регулярные деплоиЗаранее сформированный бюджет, инвестиции
Saas с подхоящим планом и набором фич
КРУПНЫЙ И АМБИЦИОЗНЫЙ СТАРТАППрофессиональная командаСформировавшиеся требования к языкам итехнологиям проектаМногокомпонентный проект (мобильные, вебприложения)Распределенная архитектураМного и часто тестируется, деплоится
Saas с долгосрочным планом, качественнойподдержкой и необходимыми фичами.
ГОСЗАКАЗ (… А ВДРУГ?!)Подобранная под проект команда специалистовЖесткие требования к безопасности проектаВнутренняя инфраструктураСформированный план релизовПовышенная отвественность за фейл, недоработки.
Hosted решения (Jenkins || TeamCity)
ВОПРОСЫ
Top Related