how do you implement continuous delivery? part 2: code management

18
HOW DO YOU IMPLEMENT CONTINUOUS DELIVERY? Part 2: Code Management Share this ebook. PERSPECTIVES

Upload: thoughtworks

Post on 02-Dec-2014

1.248 views

Category:

Technology


1 download

DESCRIPTION

'How do I manage my codebase? How do I release incomplete work?' Explore ways in Part 2 in our series of putting CD into practice - Code Management

TRANSCRIPT

Page 1: How do you implement Continuous Delivery? Part 2: Code Management

HOW DO YOU IMPLEMENT CONTINUOUS DELIVERY?

Part 2: Code Management

Share this ebook.

PERSPECTIVES

Page 2: How do you implement Continuous Delivery? Part 2: Code Management

HOW DO I MANAGE MY CODEBASE?

2

Page 3: How do you implement Continuous Delivery? Part 2: Code Management

Reliable delivery of software

Faster time to market

How do different development streams…

Trunk

Team Pink

Team Green

How do I manage my codebase?

Page 4: How do you implement Continuous Delivery? Part 2: Code Management

Reliable delivery of software

Faster time to market

How do different development streams…integrate…

Trunk

Merging Team Pink’sRepository

Branch

Merging Team Green’s

Repository Branch

1 1 1 111

2 2 2 2 2

3 3 3

4 4

5

1

2

3

4

1

2

3

1

2

1

How do I manage my codebase?

Page 5: How do you implement Continuous Delivery? Part 2: Code Management

Reliable delivery of software

Faster time to market

Without the merge conflicts of feature-branching?

Trunk

1 1 1 111

2 2 2 2 2

3 3 3

4 4

5

1

2

3

4

1

2

3

1

2

1

2

3

4

1 123

4 5

How do I manage my codebase?

Page 6: How do you implement Continuous Delivery? Part 2: Code Management

Reliable delivery of software

By Continuously Integrating

Trunk

Faster time to market

3 4 5

2

1

1 2 3 4

2 3 41 1

2

3 4 5

How do I manage my codebase?

Page 7: How do you implement Continuous Delivery? Part 2: Code Management

Some key CI practicesHow do I manage my codebase?

Everyone commits to trunk at least daily

Automated tests are run for every commit

Avoid branches

http://martinfowler.com/articles/continuousIntegration.html

Page 8: How do you implement Continuous Delivery? Part 2: Code Management

What about large codebases?How do I manage my codebase?

Page 9: How do you implement Continuous Delivery? Part 2: Code Management

What about large codebases?How do I manage my codebase? Modularizati

onMicro-services

Page 10: How do you implement Continuous Delivery? Part 2: Code Management

HOW DO I RELEASEINCOMPLETE WORK?

10

Page 11: How do you implement Continuous Delivery? Part 2: Code Management

Using Feature TogglesHow do I release incomplete work? [featureToggles]

wobblyFoobars: trueflightyForkHandles: false

<toggle name=wobblyFoobars> ... various UI elements</toggle>

forkHandle = (featureConfig.isOn(‘flightlyForkHandles)) ? new FlightyForkHander(aCandle) : new ForkHandler(aCandle)

Config File

some.jsp

other.java

Page 12: How do you implement Continuous Delivery? Part 2: Code Management

Using Branch by AbstractionHow do I release incomplete work?

Application

Library

New Library

http://paulhammant.com/blog/branch_by_abstraction.html/

Page 13: How do you implement Continuous Delivery? Part 2: Code Management

Using Branch by AbstractionHow do I release incomplete work?

Application

Library

New Library

Interface

Page 14: How do you implement Continuous Delivery? Part 2: Code Management

Using Branch by AbstractionHow do I release incomplete work?

Application

Library

New Library

Interface Implements

Page 15: How do you implement Continuous Delivery? Part 2: Code Management

Using Branch by AbstractionHow do I release incomplete work?

Application

New Library

Interface Implements

Page 16: How do you implement Continuous Delivery? Part 2: Code Management

Using Branch by AbstractionHow do I release incomplete work?

Application

New Library

Page 17: How do you implement Continuous Delivery? Part 2: Code Management

ALL ABOUT PIPELINES

17

Stay tuned for Part 3…

Page 18: How do you implement Continuous Delivery? Part 2: Code Management

LEARN MORE

Deploy a great product faster.Agile teams deliver working software early and often.Go automates and streamlines the build-test-release cycle for worry-free, continuous delivery of your product.

Share this ebook.

Visit our Continuous Delivery Channel for more posts like this.