continuous integration (ci) - an effective development practice
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
Continuous Integration
(CI)
- An Effective Development Practice -
Created by KienDN
05/2014
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
Let’s see our problem!
3
Traditional programming workflow
WAIT pain!
INTEGRATION pain!
DELIVERY pain!
4
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
Want to avoid pain?
And ask yourself how to improve
quality & productivity of your
team?
6
Solution
Continuous Integration http://en.wikipedia.org/wiki/Continuous_integration
7
CI Workflow
NO INTEGRATION pain!
NO DELIVERY pain!
1’
1Normal case
Abnormal case
8
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
Improved CI Workflow
NO WAIT pain!
1’
1Normal case
Abnormal case
10
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
How to setup it?
12
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
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