Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Кровь, пот и автоматизация в команде платформы

Кровь, пот и автоматизация в команде платформы

Как мы автоматизируем сборки релизов CUBA Platform

Avatar for Yuriy Artamonov

Yuriy Artamonov

August 11, 2017
Tweet

More Decks by Yuriy Artamonov

Other Decks in Programming

Transcript

  1. Как было 2010: Ant, SVN,Trac 2011: Gradle, Nexus, Teamcity 2012:

    YouTrack 2016: Git, GitHub, Travis CI 2017: Bintray, Slack
  2. Процесс разработки в проектах платформы • Семантическое Версионирование Major.Minor.Bugfix •

    Разработка ведётся в ветках Git • Применяется Git Rebase Flow • Одновременно поддерживается порядка 4-5 релизов, в которые время от времени выполняется обратное портирование изменений
  3. Спринты и версии Основной посыл: Проекты платформы - это системное,

    а не прикладное ПО. Процесс разработки библиотек и инструментов сильно отличается от процесса в прикладных проектах/продуктах. Минорная версия платформы разрабатывается в среднем 3 месяца: 2 месяца разработки и 1 месяц стабилизации. Стабилизация - тестирование, документирование, причесывание API Багфикс версии выходят так часто, как необходимо проектам и внешним разработчикам. Буквально - как горячие пирожки, хоть каждый день можно печь.
  4. С чего начинали автоматизировать рутину 1. Переход на YouTrack -

    SVN hook для добавления комментариев к тикетам 2. Teamcity для сборки релизов 3. Автоматическое отслеживание Fix versions и Committed to Пример: https://youtrack.cuba-platform.com/issu e/PL-9496
  5. Мины замедленного действия 1. Использование одной версии Gradle, установленной на

    CI серверах 2. Публикация сборок во внешний репозиторий при помощи повторных сборок 3. Один!11 сервер с релизами
  6. Gradle Wrapper Ваш build tool - это такая же зависимость,

    как и библиотеки. • Фиксируем версию инструментов сборки в исходном коде. • gradlew автоматически скачивает нужную версию и использует её. • Стимулируем разработчиков использовать gradlew.
  7. Как это всё починили 1. Gradle Wrapper 2. Build propagation

    при помощи mvn deploy:deploy Утилита: https://git.haulmont.com/platform/sync-nexus-to-maven 3. Bintray - распределенное хранилище для артефактов 4. Ищем недостающие зависимости: Утилита: https://git.haulmont.com/platform/find-missing-maven-libs
  8. Ещё всякая DevOps-щина 1. GitHub web hook: https://github.com/Haulmont/github-youtrack-hook 2. Trigger

    TC build by tag: https://git.haulmont.com/platform/trigger-tc-build-by-tag
  9. Travis CI - инфраструктура, которую не жалко https://travis-ci.org • Публичный

    статус сборки платформы • Позволяет быстро выявить косяки и зависимостями и держать руку на пульсе OpenSource
  10. Ускоряем выпуск релизов при помощи Slack 1. Создаём тег в

    Git 2. Ждём 3. Ссылочки прилетают в Slack 4. Profit!!