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

Антон Архипов — Конвейер сборок в TeamCity

3fc5b5eb32bd3b48d7810fd67b37f9a1?s=47 Moscow JUG
November 01, 2018

Антон Архипов — Конвейер сборок в TeamCity

TeamCity — это отличный инструмент для сборки проектов и непрерывной интеграции (CI) — в нём очень много возможностей! В этом докладе мы рассмотрим, что интересного может предложить TeamCity разработчику, что нового было добавлено в продукт в этом году, и над чем команда работает сейчас.

Темы которые в той или иной мере будут затронуты:

* Инкрементальная сборка и “build chains"
* Интеграция с Docker и Kubernetes
* IDE плагин
* REST API
* Работа с ветками в VCS

Большую часть времени уделим возможности конфигурирования сборок при помощи Kotlin DSL.

3fc5b5eb32bd3b48d7810fd67b37f9a1?s=128

Moscow JUG

November 01, 2018
Tweet

Transcript

  1. Конвейер сборок в TeamCity @antonarhipov

  2. TeamCity @ JetBrains 2000+ projects 12000+ build configurations 500+ agents

    est 2006
  3. TeamCity @ JetBrains

  4. TeamCity @ JetBrains

  5. 2018.1 (Jaipur) highlights

  6. 2018.1 (Jaipur) highlights Kotlin DSL

  7. 2018.1 (Jaipur) highlights Kotlin DSL HA: read-only server

  8. 2018.1 (Jaipur) highlights Kotlin DSL HA: read-only server Docker runner

    improvements
  9. 2018.1 (Jaipur) highlights Kotlin DSL HA: read-only server Docker runner

    improvements Bundles S3 integration
  10. 2018.1 (Jaipur) highlights Templates (step ordering) Enforced settings .NET Core

    etc
  11. Big ongoing themes

  12. Big ongoing themes Kotlin DSL

  13. Big ongoing themes Kotlin DSL UI / REST

  14. Big ongoing themes Kotlin DSL UI / REST Scalability &

    Performance
  15. Big ongoing themes Kotlin DSL UI / REST Scalability &

    Performance TeamCity hosted
  16. Big ongoing themes Kotlin DSL UI / REST Scalability &

    Performance TeamCity hosted OpenJDK
  17. More… Authorizing pull requests Bazel Go JavaScript Lightweight distribution Pipelines

  18. +

  19. Pipeline Шаг 3 Шаг 2 Шаг 3 Шаг 1

  20. Pipeline Шаг 3 Шаг 2 Шаг 3 Шаг 1

  21. Pipeline Шаг 3 Шаг 2 Шаг 3 Шаг 1 Результат

  22. Pipeline Шаг 3 Шаг 2 Шаг 3 Шаг 1 Ещё

    шаги Результат
  23. CI/CD pipeline Audit Test Package Compile Test CI pipeline TEST

    PROD DEV CD pipeline jar SW
  24. None
  25. Выкачать исходники Скомпилировать Запустить тесты Написать отчёт Опубликовать результаты

  26. Выкачать исходники Скомпилировать Запустить тесты Написать отчёт Опубликовать результаты Просто

    же!
  27. Выкачать исходники Скомпилировать Запустить тесты Написать отчёт Опубликовать результаты Просто

    же! А зачем мне “pipeline”?
  28. А сколько у вас тестов?

  29. Выкачать исходники Скомпилировать Запустить тесты Написать отчёт Опубликовать результаты

  30. Выкачать исходники Скомпилировать Запустить быстрые тесты Написать отчёт Опубликовать результаты

  31. Выкачать исходники Скомпилировать Запустить быстрые тесты Написать отчёт Опубликовать результаты

    Запустить интеграционные, UI тесты
  32. Выкачать исходники Скомпилировать Запустить быстрые тесты Написать отчёт Опубликовать результаты

    Запустить интеграционные, UI тесты Pipeline!!
  33. Выкачать исходники Скомпилировать Запустить быстрые тесты Написать отчёт Опубликовать результаты

    Запустить интеграционные, UI тесты Сборка Тестирование
  34. Тестирова ние Отчёты Оповещения Сборка

  35. Тестирование UI Отчёты Оповещения Сборка Интеграцонное тестирование Ещё больше интеграционных

    тестов
  36. Тесты Отчёты Оповещения Сборка Тесты Тесты Сборка

  37. Тесты Отчёты Оповещения Сборка Тесты Тесты Сборка Зависимости

  38. Build chains

  39. Build chains

  40. Шаг 1 Шаг 2 Шаг 3 Шаг 4

  41. Шаг 1 Шаг 2 Шаг 3 Шаг 4 rev 1

    rev 2 rev 3
  42. Шаг 1 Шаг 3 Шаг 4 rev 1 rev 3

    rev 3 Шаг 2
  43. Шаг 1 Шаг 3 Шаг 4 rev 1 rev 3

    rev 3 Шаг 2
  44. rev 1 rev 3 rev 3 Шаг 1 Шаг 3

    Шаг 2 Шаг 4
  45. rev 3 “snapshot dependency” Шаг 1 Шаг 3 Шаг 2

    Шаг 4 rev 1 rev 3
  46. None
  47. None
  48. None
  49. None
  50. None
  51. Шаг 1 Шаг 3 Шаг 4 rev 1 rev 3

    rev 3 Шаг 2 “snapshot dependency”
  52. None
  53. None
  54. None
  55. Оптимизация очереди

  56. B rev1 A rev1 C rev1 D rev1 1 2

    3 4 …
  57. B rev1 A rev1 C rev1 D rev1 1 2

    3 4 … B rev2
  58. B rev1 A rev1 C rev1 D rev1 1 2

    3 4 … B rev2
  59. B rev2 A rev1 C rev1 D rev1 1 2

    3 4 …
  60. None
  61. None
  62. 6500 сборок ~40% 3000 часов

  63. Demo

  64. @antonarhipov ? anton.arhipov@jetbrains.com