Continuous Integration for Beginners

18
CONTINUOUS INTEGRATION AND CONTINUOUS DELIVERY

Transcript of Continuous Integration for Beginners

Page 1: Continuous Integration for Beginners

CONTINUOUS INTEGRATIONAND

CONTINUOUS DELIVERY

Page 2: Continuous Integration for Beginners

AGENDA

Extreme ProgrammingWhat is CI

PracticesSource Control ToolsBuild AutomationContinuous Delivery

2

Page 3: Continuous Integration for Beginners

Extreme Programming

Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, courage and respect. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation.

3

Page 4: Continuous Integration for Beginners

Extreme Programming

4

Page 5: Continuous Integration for Beginners

What is Continuous Integration?

Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.

5

Page 6: Continuous Integration for Beginners

Continuous Integration Practices

Maintain a single source repositoryAutomate the buildMake your build self-testingEvery commit should build on an integration

machineKeep the build fastTest in a clone of production environmentEveryone can see what’s happeningAutomate deployment

6

Page 7: Continuous Integration for Beginners

Source Control Tools

7

Page 8: Continuous Integration for Beginners

Source Control Tools (Centralized vs Distributed)

8

Page 9: Continuous Integration for Beginners

Build Automation (Why?)

Early warning of broken/incompatible codeEarly warning of conflicting changesConstant availability of a "current" build for

testing, demo or release purposesHave history of builds and releases in order to

investigate issuesEliminate dependencies on key personnelSave time and money - because of the

reasons listed above

9

Page 10: Continuous Integration for Beginners

Build Automation Tools

10

Page 11: Continuous Integration for Beginners

11

Page 12: Continuous Integration for Beginners

Continuous Delivery

Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.

Martin Fowler

12

Page 13: Continuous Integration for Beginners

Continuous Delivery

Your software is deployable throughout its lifecycle

Your team prioritizes keeping the software deployable over working on new features

Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them

You can perform push-button deployments of any version of the software to any environment on demand

13

Page 14: Continuous Integration for Beginners

14

Page 15: Continuous Integration for Beginners

Extensive automation of all possible parts of the delivery process using a Deployment Pipeline

15

● Octopus Deploy, GoCD● Chef, Puppet, Ansible ● Docker● ZooKeeper, Chaos Monkey

Page 16: Continuous Integration for Beginners

Deployment Strategies

Blue-Green Deployment

16

Page 17: Continuous Integration for Beginners

Deployment Strategies

Canary ReleaseDark LaunchingPhoenix DeploymentEnvironment Promotion

17

Page 18: Continuous Integration for Beginners

18