Tags©
Newsletter Subscription
Registered Members Only
Login
- Images -
Latest Articles
IP
Shoutbox
Articles Hierarchy
Continuous Integration - What is it?
Continuous Integration
Wont to know more about the hottest expanding area within software development ???
What is CI ? --> http://en.wikipedia.org/wiki/Continuous_integration
CI is an (often) automatic process, taking code changes into a codebase, build and test the delivered changes.
'Approve' the delivery if all lights are green from the following
- Merging in the applied changes - OK!
- Compilation of the newly merged works -OK!
- Testing (if your are running this too) – OK!
- If you are testing coverage (functions, lines, modules ..) – OK!
- If you have static code analysis - tests like MISRA, PCLint...OK!
When all lights are green - the applied changes are accepted. Making it ready for next CI .. deliverables.
The nice thing is if it fails, the last delivery would be rejected and the responsible informed about the problem(s) - avoiding big bang compilation and testing. Pushing the incremental approach too.
The automatic approach - if having tools to automate the process - really saves time and money. Perhaps (actually often) even make more advanced checking, coverage analysis, static & dynamic code analysis, even test on targets if things goes well. All step-by-step. You make a small change, deliver this, wupti.
It gets tested and if it passes your conditions it get approved ... now ready for next input :-)
A classical and well reputed tool for helping you continuously compile, test and approve your code base - automate the hole process.
--> Jenkins https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins
Mr Jenkins (or any other tool) will monitor your code bases (like cvs, cc, subversion) looking for changed baselines on your integration stream or on your main stream and if this is the trigger, start a process of whatever you have defined. That could be checking out files, changing baseline status, compiling for target, compiling and run your unit test, perhaps even try some pre-defined integration testing, even more unit testing on the integrated modules.
Mr. Jenkins could look at the output from the coverage analysis performed ... Yes!!! you name it 'He' will do it. It could be anything you type on the command line.
If everything is satisfactory - all test passed, all levels green - then promote the baseline to approved. Now everyone is happy!
Part of the job is normally also downloading the build project to a target and performing system testing too. If you have a system that automatically could run your test - well that part could also me handled.
So delivery process is simplified and automated.
CI provides up-to-date-code bases - people are happy. Of cause provided your developer deliveries several times per day ... yes!! even in a multi people environment.
Integration testing: Deliver - baseline - merge - compile/build - Unit Testing - integration testing - static code analysis - baseline - promote
System testing: Take base line - flash target - run system/product tests
CI can take place at your developer stream, your integration stream as well as your main stream.
Typically CI (and Jenkins) can do lot of the practically work you normally has around your release procedures.
How to get started some have asked me ?
Its quite cheap getting started with CI.
If you take a std PC use this as your build/integration 'server'.
Install Jenkins and your compiler, version management systems ...
A few click later and you have your first automatically Build Integration System.
/johnk
Comments
Post Comment
Articles Panel
Article | Posted By | Date | Reads | |
Continuous Integration - What is it? Process & methods |
johnkaasgaard |
14-07-2013 11:17 | 19919 | |
"Scaling Lean & Agile Development" & "Practices for ..." books |
johnkaasgaard |
12-07-2013 20:42 | 71515 | |
Simple low level testing using an I/O pin, LED or like Tools |
johnkaasgaard |
21-06-2013 18:57 | 15599 |
Total Articles: 3 :: Total Article Categories: 8 |