Continuous Integration (CI) - Team...

31
1 © Nokia Solutions and Networks 2014 Confidential Continuous Integration (CI) Nikko Noel Balde 10-02-2016

Transcript of Continuous Integration (CI) - Team...

Page 1: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

1 © Nokia Solutions and Networks 2014

Confidential

Continuous Integration (CI)• Nikko Noel Balde

• 10-02-2016

Page 2: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

2 © Nokia Solutions and Networks 2014

Confidential

Topic Outline

• Why do we need CI?

• Introduction to CI

• A Typical CI Workflow

• CI Practices

• Jenkins: A CI Server

Page 3: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

3 © Nokia Solutions and Networks 2014

Why do we need CI?

Confidential

Page 4: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

4 © Nokia Solutions and Networks 2014

Confidential

Page 5: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

5 © Nokia Solutions and Networks 2014

Confidential

Page 6: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

6 © Nokia Solutions and Networks 2014

Introduction to CI

Confidential

Page 7: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

7 © Nokia Solutions and Networks 2014

Confidential

Page 8: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

8 © Nokia Solutions and Networks 2014

Eliminate blind spots so you can build and deliver software more rapidly.

Confidential

Continuous Integration (CI)

“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.”

“By integrating regularly, you can

detect errors quickly, and locate them

more easily.”

Page 9: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

9 © Nokia Solutions and Networks 2014

Confidential

Minimize the

duration and effort

required by "each"

integration

What does CI tries to achieve?

Be able to deliver

"at any moment“ a

product version

suitable for release

Page 10: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

10 © Nokia Solutions and Networks 2014

What CI brings to an Organization

Say goodbye to long and tense integrations

Increase visibility which enables greater communication

Catch issues fast

Spend less time debugging and more time adding features

Proceed in the confidence you’re building on a solid foundation

Stop waiting to find out if your code’s going to work

Reduce integration problems allowing you to deliver software more rapidly

Confidential

Page 11: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

11 © Nokia Solutions and Networks 2014

What Prevents Teams from using CI

Confidential

Increased overhead in maintaining

the CI system

Additional hardware/software

costs

Page 12: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

12 © Nokia Solutions and Networks 2014

A Typical CI Workflow

Confidential

Page 13: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

13 © Nokia Solutions and Networks 2014

Confidential

Page 14: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

14 © Nokia Solutions and Networks 2014

Confidential

Continuous Integration (CI)

Continuous

• Technically, continuous means

something that once started, never

stops.

• Continuous in the concept of CI is

more like continual.

Integration

• The act of combining separate

source code artifacts to determine

how they work as a whole.

Page 15: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

15 © Nokia Solutions and Networks 2014

CI Practices

Confidential

Page 16: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

16 © Nokia Solutions and Networks 2014

CI PracticesSingle Source Point

Use a Version Control

System

Confidential

MAINLINE

A single branch of the project

currently under development.

(trunk, master, etc.)

Page 17: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

17 © Nokia Solutions and Networks 2014

CI PracticesAutomated Build Scripts

Automate the Build

Confidential

BUILD

A set of activities performed to

generate, test, inspect, and deploy

software.

BUILD SCRIPT

A single script, or set of scripts, you

use to compile, test, inspect, and

deploy software

Page 18: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

18 © Nokia Solutions and Networks 2014

CI PracticesSelf-Testing Code

Create tests for your

code

Confidential

Page 19: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

19 © Nokia Solutions and Networks 2014

CI PracticesFrequent Commits

Everyone should

commit code as

regularly as possible

Confidential

BULD

A set of activities performed to

generate, test, inspect, and deploy

software.

Page 20: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

20 © Nokia Solutions and Networks 2014

CI PracticesIntegration Build Machine

Every Commit Should

Build the Mainline on

a Separate Integration

Build Machine

Confidential

BULD

A set of activities performed to

generate, test, inspect, and deploy

software.

Page 21: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

21 © Nokia Solutions and Networks 2014

CI PracticesAlways have a Stable Base

Fix Broken Builds

Immediately

Confidential

Page 22: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

22 © Nokia Solutions and Networks 2014

CI PracticesRapid Feedback

Keep the Builds Fast

Confidential

Page 23: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

23 © Nokia Solutions and Networks 2014

CI PracticesEasily Accessible Software

Make it Easy for

Anyone to Get the

Latest Executable

Confidential

Page 24: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

24 © Nokia Solutions and Networks 2014

CI PracticesStatus Visibility

Everyone should be

able to see Results of

the Latest Build

Confidential

Page 25: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

25 © Nokia Solutions and Networks 2014

CI PracticesDon’t…

Don’t commit broken

code!

Confidential

Don’t commit untested

code!

Don’t commit when

the build is broken!

Page 26: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

26 © Nokia Solutions and Networks 2014

Jenkins: A CI Server

Confidential

Page 27: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

27 © Nokia Solutions and Networks 2014

Confidential

Runs an integration build whenever a change is committed to the version control

repository.

Recommended, but not necessarily required for CI

Examples: CruiseControl, Jenkins

CI Server

Page 28: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

28 © Nokia Solutions and Networks 2014

Confidential

• Open source Continuous Integration server written in

Java

• Has a simple configuration through a web-based

GUI, which speeds up Job creation, improves

consistency, and decreases the maintenance costs

• Is a master slave topology that distributes the build

and testing effort over slave servers with the results

automatically accumulated on the master

• Vastly extendable through plugins, with over 400

plugins available

JenkinsA CI Server

Page 29: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

29 © Nokia Solutions and Networks 2014

Confidential

To have a look and feel of Jenkins, go to:

https://ci.jenkins-ci.org/

JenkinsDemo

Page 30: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice

30 © Nokia Solutions and Networks 2014

Confidential

• Continuous Integration: Improving Software Quality and Reducing Risk

By: Paul Duvall

• Jenkins Continuous Integration Cookbook

By: Alan Mark Berg

• Continuous Integration

http://en.wikipedia.org/wiki/Continuous_integration

• Jenkins

http://jenkins-ci.org/

References

Page 31: Continuous Integration (CI) - Team Ztheteamzuniga.org/wp-content/uploads/2016/02/CS-197-SE-CI.pdfContinuous Integration (CI) “Continuous Integration (CI) is a development practice