49
CI/CD UNDER MICROSCOPE KIRILLOV ALEXANDER 2016.secon.ru #secon.ru 22 АПРЕЛЯ 2016 ПЕНЗА

SECON'2016. Кириллов Александр, Continuous Integration под микроскопом

  • Upload
    secon

  • View
    130

  • Download
    1

Embed Size (px)

Citation preview

CI/CD UNDERMICROSCOPE

KIRILLOV ALEXANDER

2016.secon.ru #secon.ru

22 АПРЕЛЯ 2016 ПЕНЗА

СЕГОДНЯ Я НЕ БУДУ…рассказывать зачем тестировать проектыдоказывать что тесты нужныобъяснять что такое 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)

ВОПРОСЫ