CONTINUOUS INTEGRATION –WHY WE DO IT?
AGENDA What is CI ? What tools can be used for CI ? Why choose Jenkins for CI ? Jenkins Benefits About Project CI Principles we use Project Demo
WHAT IS CI? Continuous Integration also known as CI is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily – leading to multiple integrations per day. --MARTIN FOWLER
WHAT TOOLS CAN BE USED FOR CI? Code Repositories >SVN, Mercurial,Git Continuous Build Systems >Jenkins,Bamboo,Hudson,Cruise Control, Buildbot Test Framework >Junit, Cucumber, CppUnit, NoseTest Artifacts Repositories >Nexus, Artifactory, Archiva
WHY CHOOSE JENKINS FOR CI ? Jenkins is an open source software tool written in Java Jenkins community is very large(also you can be part on this community) You can customize Jenkins server by installing different plugins to help you go easily through the project Is user friendly and almost anyone can manage and use Jenkins
JENKINS BENEFITS Generate test reports Integrate with many different Version Control Systems(git, svn, mercurial) Push to various artifacts repositories Deploys directly to productions or test environments Notify stakeholders of build status … and much more
ABOUT PROJECT
CODE AND TOOLS Code Python – UnitTest, dynamic and cross-platform scripting AutoIT – library used for automating Windows GUI ex: BlockInput() -> Disable/enable the mouse and keyboard Tools Jenkins Eclipse + PyDev PhD2 – identify elements on screen CamStudio – video screenshots for logging References: http://www.vogella.com/tutorials/Python/article.html https://www.autoitscript.com/site/autoit/ http://camstudio.org/
PRINCIPLES Test Scripts Deploy Test Report Develop Test Scripts
PROJECT DEMO
HOW WE “DEPLOY” Test Script Development Push test scripts to Git repository Nightly script brings latest builds to local repository Configure jobs in Jenkins Deploy Pull latest tests scripts from Git repository Uninstall older build Update configuration files Silent install latest build Start executing tests based on filtered criteria
HOW WE “TEST” Tests written based on: Feature Priority Project Structure: Fixtures TestResults Tests Tools Utils General scripts: installs/uninstalls, CI starting
HOW WE “REPORT“ Project reports: Logs Screenshots Screen Recordings CI reporting: Configured in Jenkins Post-build Actions Build History shows Tests Result
THANK YOU!