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
![Page 1: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/1.jpg)
Continuous Integration
(CI)
- An Effective Development Practice -
Created by KienDN
05/2014
![Page 2: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/2.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/3.jpg)
Let’s see our problem!
3
![Page 4: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/4.jpg)
Traditional programming workflow
WAIT pain!
INTEGRATION pain!
DELIVERY pain!
4
![Page 5: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/5.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/6.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/7.jpg)
Solution
Continuous Integration http://en.wikipedia.org/wiki/Continuous_integration
7
![Page 8: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/8.jpg)
CI Workflow
NO INTEGRATION pain!
NO DELIVERY pain!
1’
1Normal case
Abnormal case
8
![Page 9: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/9.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/10.jpg)
Improved CI Workflow
NO WAIT pain!
1’
1Normal case
Abnormal case
10
![Page 11: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/11.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/12.jpg)
How to setup it?
12
![Page 13: Continuous Integration (CI) - An effective development practice](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/13.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051816/5463d7f2b4af9f623f8b46e6/html5/thumbnails/14.jpg)
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