35
Best Practices for Continuous Integration Setup Михаил Кузьмин Никита Скворцов JetBrains

Best Practices for Continuous Integration Setup

Embed Size (px)

DESCRIPTION

Modern continuous integration tools have grown over years, and turned into smart and complex software. They support a wide range of technologies, and offer lots of options for configuration and customization. This often means that there are several ways to configure your continuous integration server to achieve the same goal. Some of these approaches are worse than others, as such configurations are harder to maintain. Besides, they do not allow using additional features and getting extra benefits that the CI server could provide. We know this from our experience in developing JetBrains TeamCity and supporting our customers. Over time we have seen lots of deployments and real environments, and accumulated broad knowledge on good and bad practices of CI software configuration. This talk will be useful for anyone dealing with Continuous Integration. We will review most common configuration problems and mistakes, discuss different solutions for them and demonstrate some of the advanced TeamCity features that enable you to manage build infrastructure more efficiently.

Citation preview

Page 1: Best Practices for Continuous Integration Setup

Best Practices for Continuous Integration Setup

Михаил КузьминНикита СкворцовJetBrains

Page 2: Best Practices for Continuous Integration Setup
Page 3: Best Practices for Continuous Integration Setup

Проблемы

1. Билды зависят от окружения

2. Артефакты в VCS

3. Релизится не то, что было протестировано

4. Рассинхронизация билдов в очереди

5. Билды с параметрами

6. Красные билды

Page 4: Best Practices for Continuous Integration Setup

cd D:\Project

Абсолютные пути

Page 5: Best Practices for Continuous Integration Setup

Script 1Script 2Script 3

Несколько шагов в билде

Page 6: Best Practices for Continuous Integration Setup

#1 Делайте билды переносимыми

Page 7: Best Practices for Continuous Integration Setup

Зависимости

VCSCI

Sources

Artifacts

Page 8: Best Practices for Continuous Integration Setup

Зависимости

VCS

Artifact Repository

CISources

Artifacts

Page 9: Best Practices for Continuous Integration Setup

Артефакты билда в VCS

CIVCS

Artifact

Page 10: Best Practices for Continuous Integration Setup

Артефакты билда в VCS

CIVCS

Artifact

Page 11: Best Practices for Continuous Integration Setup

#2 Пользуйтесь репозиториями артефактов

Page 12: Best Practices for Continuous Integration Setup

Demo: NuGet

Page 13: Best Practices for Continuous Integration Setup

Тесты на разных платформах

Page 14: Best Practices for Continuous Integration Setup

Тесты на разных платформах

Page 15: Best Practices for Continuous Integration Setup

Тесты на разных платформах

Page 16: Best Practices for Continuous Integration Setup

#3 Переиспользуйте артефакты между билдами

Page 17: Best Practices for Continuous Integration Setup

Demo: Artifact Dependencies

Page 18: Best Practices for Continuous Integration Setup

Commit 1

Compile Test

Очередь билдов

Page 19: Best Practices for Continuous Integration Setup

Compile Test

Очередь билдов

Ожидание

Commit 1

Page 20: Best Practices for Continuous Integration Setup

Compile

Commit 2 Commit 3

Очередь билдовCommit 1

Test

Ожидание

Page 21: Best Practices for Continuous Integration Setup

Compile

Revision 1 Revision 3

Очередь билдовCommit 1 Commit 2 Commit 3

Test

Page 22: Best Practices for Continuous Integration Setup

#4 Синхронизируйте цепочку билдов

Page 23: Best Practices for Continuous Integration Setup

Compile

Очередь билдовCommit 1 Commit 2 Commit 3

Test

Revision 1 Revision 3

Page 24: Best Practices for Continuous Integration Setup

Compile

Очередь билдовCommit 1 Commit 2 Commit 3

Test

Revision 1 Revision 1

Page 25: Best Practices for Continuous Integration Setup

Demo: Snapshot Dependencies

Page 26: Best Practices for Continuous Integration Setup

Staging Production

Бидл с параметрами

Page 27: Best Practices for Continuous Integration Setup

Статус проекта

Page 28: Best Practices for Continuous Integration Setup

История билдов

Page 29: Best Practices for Continuous Integration Setup

#5 Билды должны повторять одинаковую процедуру

Page 30: Best Practices for Continuous Integration Setup

Demo: Configuration Templates

Page 31: Best Practices for Continuous Integration Setup

Красные билды

Page 32: Best Practices for Continuous Integration Setup

#6 Исправляйте красные билды

Page 33: Best Practices for Continuous Integration Setup

Demo: Feature Branches

Page 34: Best Practices for Continuous Integration Setup

Решения

1. Делайте билды переносимыми

2. Пользуйтесь репозиториями артефактов

3. Переиспользуйте артефакты между билдами

4. Синхронизируйте цепочку билдов

5. Билды должны повторять одинаковую процедуру

6. Исправляйте красные билды

Page 35: Best Practices for Continuous Integration Setup

Спасибо за внимание!

Никита Скворцов[email protected]

Михаил Кузьмин[email protected]

http://www.jetbrains.com/teamcity/