from continuous integration to continuous delivery with teamcity

78
XP Days Ukraine 2016 November 11, 2016 Kiev

Upload: sergey-pak

Post on 13-Apr-2017

81 views

Category:

Software


1 download

TRANSCRIPT

Page 1: From Continuous integration to Continuous Delivery with TeamCity

XP Days Ukraine 2016—

November 11, 2016Kiev

Page 2: From Continuous integration to Continuous Delivery with TeamCity

From Continuous Integration to Continuous Deliverywith TeamCity—

Sergey PakTeamCity DeveloperJetbrains

Page 3: From Continuous integration to Continuous Delivery with TeamCity

About myself—

• Delivering code since 2003

• Improving TeamCity since 2013

• Primary focus - cloud integration

From CI to CD with TC About myself

@JetBrains. All rights reserved

[email protected]

Page 4: From Continuous integration to Continuous Delivery with TeamCity

What is Continuous Integration—

• Integrate into shared mainline

From CI to CD with TC What is CI

@JetBrains. All rights reserved

Page 5: From Continuous integration to Continuous Delivery with TeamCity

What is Continuous Integration—

• Integrate into shared mainline

• Automated self-testing build

• Test every commit

• Everyone can see the results

From CI to CD with TC What is CI

@JetBrains. All rights reserved

Page 6: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Before TeamCity

@JetBrains. All rights reserved

Before TeamCity

Page 7: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Before TeamCity

@JetBrains. All rights reserved

CruiseControl—

The main and the only CI tool in 2006

Page 8: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Before TeamCity

@JetBrains. All rights reserved

CruiseControl—

Edit configuration

Page 9: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Before TeamCity

@JetBrains. All rights reserved

We needed another CI tool

Page 10: From Continuous integration to Continuous Delivery with TeamCity

Problems to address initially—

• 5 PM Check-in

• Multiple platforms

• UI to edit configurations

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 11: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Remote Run—

Page 12: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Remote Run +Pretested Commit—

Page 13: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Remote Run UI—

Page 14: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Remote Run UI—

Page 15: From Continuous integration to Continuous Delivery with TeamCity

Problems to address initially—

• 5 PM Check-in - Remote Run + Pretested commit

• Multiple platforms

• UI to edit configurations

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 16: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 17: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 18: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

• Tools and plugins: from server

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 19: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

• Tools and plugins: from server

• No maintenance required:

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 20: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

• Tools and plugins: from server

• No maintenance required:• Auto-upgrade

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 21: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

• Tools and plugins: from server

• No maintenance required:• Auto-upgrade• Can work without server

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 22: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

• Required software:

• Tools and plugins: from server

• No maintenance required:• Auto-upgrade• Can work without server• Self-cleanup

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 23: From Continuous integration to Continuous Delivery with TeamCity

Build Agent—

Available out of the box:

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 24: From Continuous integration to Continuous Delivery with TeamCity

Problems to address initially—

• 5 PM Check-in

• Multiple platforms - Build agent

• UI to edit configurations

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 25: From Continuous integration to Continuous Delivery with TeamCity

TeamCity UI—

2006

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 26: From Continuous integration to Continuous Delivery with TeamCity

TeamCity UI—

2016

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 27: From Continuous integration to Continuous Delivery with TeamCity

Problems to address initially—

• 5 PM Check-in - Remote run + Pretested commit

• Multiple platforms - Build agent

• UI to edit configurations

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Page 28: From Continuous integration to Continuous Delivery with TeamCity

Other problems—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Multiple repos / long checkout Get revisions first

Reuse settings Templates

No responsibility Investigations

Parallel execution Build chains (Snapshot dependencies)

Page 29: From Continuous integration to Continuous Delivery with TeamCity

Other problems—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Multiple repos / long checkout Get revisions first

Reuse settings Templates

No responsibility Investigations

Parallel execution Build chains (Snapshot dependencies)

Page 30: From Continuous integration to Continuous Delivery with TeamCity

Other problems—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Multiple repos / long checkout Get revisions first

Reuse settings Templates

No responsibility Investigations

Parallel execution Build chains (Snapshot dependencies)

Page 31: From Continuous integration to Continuous Delivery with TeamCity

Other problems—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Multiple repos / long checkout Get revisions first

Reuse settings Templates

No responsibility Investigations

Parallel execution Build chains (Snapshot dependencies)

Page 32: From Continuous integration to Continuous Delivery with TeamCity

Other problems—

From CI to CD with TC TC 1.0

@JetBrains. All rights reserved

Multiple repos / long checkout Get revisions first

Reuse settings Templates

No responsibility Investigations

Parallel execution Snapshot dependencies(Build chain)

Page 33: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Snapshot Dependencies

Page 34: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

• Source-level dependency

• Snapshot = set of VCS revisions

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 35: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Build chains:

• Chain 1: GDCA• Chain 2: GDHEFB

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 36: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Trigger one build

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 37: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Optimize

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 38: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Optimize

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 39: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Optimize

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 40: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Results in one place:

• dependencies

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 41: From Continuous integration to Continuous Delivery with TeamCity

Snapshot dependencies—

Results in one place:

• tests

From CI to CD with TC Snapshot dependencies

@JetBrains. All rights reserved

Page 42: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Feature branches

Page 43: From Continuous integration to Continuous Delivery with TeamCity

Feature branches—

SVN vs GitMarketshare

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 44: From Continuous integration to Continuous Delivery with TeamCity

Feature branches—

• Same build configuration

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 45: From Continuous integration to Continuous Delivery with TeamCity

Feature branches—

• Same build configuration

• Branch - build/test attribute

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 46: From Continuous integration to Continuous Delivery with TeamCity

Feature branches—

• Same build configuration

• Branch - build/test attribute

• Different settings per branch

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 47: From Continuous integration to Continuous Delivery with TeamCity

Feature branchesUI—

Overview

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 48: From Continuous integration to Continuous Delivery with TeamCity

Feature branchesUI—

History

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 49: From Continuous integration to Continuous Delivery with TeamCity

Feature branchesUI—

Build chains

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 50: From Continuous integration to Continuous Delivery with TeamCity

Feature branchesUI—

Test history

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 51: From Continuous integration to Continuous Delivery with TeamCity

DVСS Support—

• Mirrors on agents

• Sparse checkout

• Subrepo/submodule support

• Auto-merge

From CI to CD with TC Feature branches

@JetBrains. All rights reserved

Page 52: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

Cloud integration

Page 53: From Continuous integration to Continuous Delivery with TeamCity

Why Cloud?—

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

Page 54: From Continuous integration to Continuous Delivery with TeamCity

Why Cloud?—

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

• Easier maintenance

Page 55: From Continuous integration to Continuous Delivery with TeamCity

Why Cloud?—

• Easier maintenance

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

Page 56: From Continuous integration to Continuous Delivery with TeamCity

Why Cloud?—

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

• Scalability

Page 57: From Continuous integration to Continuous Delivery with TeamCity

Why Cloud?—

• Easier maintenance

• Scalability• EC2 spot instances supported

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

Page 58: From Continuous integration to Continuous Delivery with TeamCity

Cloud Integration—

From CI to CD with TC Cloud integration

@JetBrains. All rights reserved

Page 59: From Continuous integration to Continuous Delivery with TeamCity

Dogfooding vs External Feedback—

From CI to CD with TC Dogfooding

@JetBrains. All rights reserved

Page 60: From Continuous integration to Continuous Delivery with TeamCity

Features from Jetbrainers—

• Feature branches

• Fix revisions before build

• Snapshot dependencies

• Remote run

From CI to CD with TC Dogfooding

@JetBrains. All rights reserved

Page 61: From Continuous integration to Continuous Delivery with TeamCity

Features from customers—

• Multiple build steps

• Project hierarchy

• Per-project permissions (+roles)

• Cloud integration

From CI to CD with TC Dogfooding

@JetBrains. All rights reserved

Page 62: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Dogfooding

@JetBrains. All rights reserved

Want your feature?Let us know!

https://youtrack.jetbrains.com

Page 63: From Continuous integration to Continuous Delivery with TeamCity

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Continuous Deploymentof

TeamCity with TeamCity

Page 64: From Continuous integration to Continuous Delivery with TeamCity

Why CD?—

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 65: From Continuous integration to Continuous Delivery with TeamCity

Why CD?—

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 66: From Continuous integration to Continuous Delivery with TeamCity

Why CD?—

• Less changes per update

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 67: From Continuous integration to Continuous Delivery with TeamCity

Why CD?—

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

67

Page 68: From Continuous integration to Continuous Delivery with TeamCity

Why CD?—

• Less changes per update

• Early feedback

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 69: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

TeamCity = Service + Product

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 70: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

Numbers:

• 17,000 tests

• Test coverage 65%

• 46 configurations

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 71: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

Instance size:

• 320 agents (220 - vmware)

• 25,000 builds per day

• 600 users

• 4000 build configurations in 700 projects

• 10TB artifacts

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 72: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

Instance size:

• 10 CPU Cores

• -Xmx10G

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 73: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

• Unit tests

• Integration tests

• Acceptance tests

• Code review

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 74: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CD—

• Unit tests

• Integration tests

• Acceptance tests

• Code review

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

= Trusted package

Page 75: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CDTrusted package—

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 76: From Continuous integration to Continuous Delivery with TeamCity

TeamCity CDDeployment—

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 77: From Continuous integration to Continuous Delivery with TeamCity

Conclusion—

• Use TeamCity - it’s free to start

• Get in touch with us:• https://youtrack.jetbrains.com• [email protected][email protected]

• Happy building!

From CI to CD with TC Continuous Deployment

@JetBrains. All rights reserved

Page 78: From Continuous integration to Continuous Delivery with TeamCity

Thank you for your attention—

jetbrains.com