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

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

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

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

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!!