Continuous Integration (CI) - An effective development practice

15
Continuous Integration (CI) - An Effective Development Practice - Created by KienDN 05/2014 [email protected]

description

This document introduces a very effective practice of software development method called Continuous Integration. CTO/Manager of IT company (outsource/startup company) should have a look.

Transcript of Continuous Integration (CI) - An effective development practice

Page 1: Continuous Integration (CI) - An effective development practice

Continuous Integration

(CI)

- An Effective Development Practice -

Created by KienDN

05/2014

[email protected]

Page 2: Continuous Integration (CI) - An effective development practice

Foreword

• This document is?

– To introduce a very effective practice of software

development method called Continuous

Integration

• Who should see?

– CTO/Manager of IT company (outsource/startup

company)

2

Page 3: Continuous Integration (CI) - An effective development practice

Let’s see our problem!

3

Page 4: Continuous Integration (CI) - An effective development practice

Traditional programming workflow

WAIT pain!

INTEGRATION pain!

DELIVERY pain!

4

Page 5: Continuous Integration (CI) - An effective development practice

Problem

• Wait pain!

– Developer 1 has to wait if developer 2 commits

buggy code (step 2).

• Integration pain!

– Typically, your software not works when your

team integrate together.

• Delivery pain!

– Bug can only be detected at nearly end of the

workflow (step 4,5). Too late to deliver on time.

5

Page 6: Continuous Integration (CI) - An effective development practice

Want to avoid pain?

And ask yourself how to improve

quality & productivity of your

team?

6

Page 7: Continuous Integration (CI) - An effective development practice

Solution

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

7

Page 8: Continuous Integration (CI) - An effective development practice

CI Workflow

NO INTEGRATION pain!

NO DELIVERY pain!

1’

1Normal case

Abnormal case

8

Page 9: Continuous Integration (CI) - An effective development practice

CI Workflow - Benefit

• No integration pain!

– Submitted code is verified by automation test

on a CI server cluster. Each buggy code is

notified immediately.

• No delivery pain!

– Tested deployment package always be

available to customer, at any moment.

9

Page 10: Continuous Integration (CI) - An effective development practice

Improved CI Workflow

NO WAIT pain!

1’

1Normal case

Abnormal case

10

Page 11: Continuous Integration (CI) - An effective development practice

Improved CI Workflow - Benefit

• No wait pain!

– Developer submit source code to pre-test

repository server. If passing automation test, it

is auto-submitted to main repository.

– Main repository always contains stable

version of source code. No wait to get clean

code anymore.

More improved solution!Integrate code review process into the workflow at the pre-test repository

server.

11

Page 12: Continuous Integration (CI) - An effective development practice

How to setup it?

12

Page 13: Continuous Integration (CI) - An effective development practice

ToolsetNo Tool name Category Features

1 Jenkins, Hudson, TeamCity, BuildBot CI Continuous integration tool

2 Perforce, Git, SVN, Gerrit SCM Source code repository

3 Ant, Maven, Gradle BuildTool Compile/build software

4 Email, Jabber BuildNotifer Notify people by mail or IM, SMS,

Ticket

5 Checkstyle, Emma/Cobetura, Dry,

FindBugs/PMD

StaticAnalysis Analysis coding convention, code

coverage, duplicated code, possible

bug and report

6 jUnit, Robotium, Robolectric,

Espresso

UnitTest Framework to write unit test

7 Selenium, NativeDriver, Selendroid,

WebDriver, PhantomJS

AutomationTest Framework to write automated test

8 Artifact Uploader, Copy Artifact, FTP,

SSH

Deployment Deploy/upload package to production

sever

These are some typical tools for Android world, other are similar! 13

Page 14: Continuous Integration (CI) - An effective development practice

Discussion

• What type of software project should apply this

practice?

– Game online, e-commercial, social network?

• What is the difficulty?

– Initial setup, operation, training?

• What is the cost of server cluster?

– How long does it take to setup?

– How much does it cost?

14

Page 15: Continuous Integration (CI) - An effective development practice

Feel free to contact for further

discussion!

Email: [email protected]

15