Your SlideShare is downloading. ×
0
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Simple tools to fight bigger quality battle

33,878

Published on

This presentation was given in GTAC 2008 (Also available on www.TestingGeek.com) and discuss the approach of using SVN commit hooks and batch files as continuous integration system.

This presentation was given in GTAC 2008 (Also available on www.TestingGeek.com) and discuss the approach of using SVN commit hooks and batch files as continuous integration system.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
33,878
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
55
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    1. Simple tools to fight the bigger Quality Battle Continuous Integration using batch files and task scheduler www.testinggeek.com   By:                                                                                                                Komal Joshi                                        Director:Atlantis Software Ltd.        Patrick Martin                                     Sr Software Engineer (Consultant)
    2. Agenda www.testinggeek.com <ul><ul><li>Introduction to CI </li></ul></ul><ul><li>  </li></ul><ul><ul><li>How it works </li></ul></ul><ul><li>  </li></ul><ul><ul><li>CI suitable for our needs </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Challenges Faced </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Our Solution </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Implementation </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Q/A </li></ul></ul>
    3. Say Hello to CI.. www.testinggeek.com <ul><ul><li>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. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Integration verified by an automated build (including test) integration errors are detected as quickly as possible. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Significantly reduced integration problems </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Teams develop cohesive software more rapidly and to higher quality standards. </li></ul></ul>
    4. www.testinggeek.com
    5. Why CI ? www.testinggeek.com <ul><ul><li>Last minute changes </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Resource Crisis </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Quality was very important for financial application </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Tight schedule </li></ul></ul>
    6. Challenges www.testinggeek.com
    7. Challenges Faced www.testinggeek.com <ul><li>Application </li></ul><ul><ul><li>Delphi based </li></ul></ul><ul><ul><li>Standalone desktop </li></ul></ul><ul><li>Resources </li></ul><ul><ul><li>Few </li></ul></ul><ul><ul><li>Not highly technical </li></ul></ul><ul><li>So we needed a solution that was: </li></ul><ul><ul><li>Easy to implement </li></ul></ul><ul><ul><li>Not tied to a specific technology </li></ul></ul><ul><ul><li>Could be easily replicated </li></ul></ul><ul><ul><li>Should be a simple one click solution. </li></ul></ul><ul><ul><li>Easily configurable. </li></ul></ul>
    8. Solution was www.testinggeek.com <ul><ul><li>No heavy weight Client/Server application but task schedulers </li></ul></ul><ul><ul><li>No XML but easily configurable text files  </li></ul></ul><ul><ul><li>No fuss-setup but one click execution of batch files </li></ul></ul><ul><ul><li>'Out of the box' continous build batch process </li></ul></ul>
    9. Key Features www.testinggeek.com <ul><ul><li>  Distributed in nature </li></ul></ul><ul><ul><li>No web tools commonly associated with modern distributed architecture. </li></ul></ul><ul><ul><li>The entire system was achieved by simple text files. </li></ul></ul><ul><ul><li>No fuss batch files </li></ul></ul><ul><ul><li>Open source and simple tools  </li></ul></ul><ul><li>  </li></ul><ul><ul><li>  Technology Agnostic </li></ul></ul>
    10. High Level Implementation www.testinggeek.com developer tester repository build appliance test appliance App1 more... more... App2 step 0 step 1 step 2 step 2 App4 App3 step 3 step 4 step 5 - test! test appliance
    11. Process Steps www.testinggeek.com <ul><li>step 0: run the product build script </li></ul><ul><ul><li>creates / updates checkout </li></ul></ul><ul><li>  </li></ul><ul><li>step 1: develop / test product </li></ul><ul><ul><li>can be developer, tester or ad-hoc testing </li></ul></ul><ul><li>  </li></ul><ul><li>step 2: commit changes </li></ul><ul><ul><li>can be developer, tester or ad-hoc testing </li></ul></ul><ul><li>  </li></ul><ul><li>step 3: post-commit actions </li></ul><ul><ul><li>repository post-commit actions queues up revisions to be built (perhaps) </li></ul></ul><ul><li>  </li></ul><ul><li>step 4: build revision (perhaps) </li></ul><ul><ul><li>build appliances run product build script: build if required due to update </li></ul></ul><ul><li>  </li></ul><ul><li>step 5: test (perhaps) </li></ul><ul><ul><li>test appliances run product update script and test </li></ul></ul>
    12. www.testinggeek.com Subversion Repository Build Machines Test Machines VbSend Mail Utility
    13. Overall Flow www.testinggeek.com repository post-commit + task drop markers to build machine(s) tasks on build machines pick up revisions; build successful build tasks drop test markers; notify tasks on test machines pick up revision build for test run tests; archive tested revisions summarise results and notify team commit to repository
    14. Subversion Repository www.testinggeek.com <ul><ul><li>Post Commit Hooks </li></ul></ul><ul><ul><ul><li>Copy the build-markers </li></ul></ul></ul><ul><ul><li>Scheduled tasks after 10 minutes </li></ul></ul><ul><ul><ul><li>Poll to check for markers </li></ul></ul></ul><ul><ul><ul><li>Kick off scripts to Parse the machines names from .txt files </li></ul></ul></ul><ul><ul><ul><li>Copy the markers to remote machines </li></ul></ul></ul><ul><ul><ul><li>Run the scheduled tasks remotely </li></ul></ul></ul>
    15. www.testinggeek.com Repo: Config File with machine name and build Repo: Config File with machine name and task names
    16. Build Machine www.testinggeek.com <ul><ul><li>Build-Scripts </li></ul></ul><ul><ul><ul><li>Kicked off by the parameters in Schedule tasks </li></ul></ul></ul><ul><ul><li>Scheduled tasks after 10 minutes </li></ul></ul><ul><ul><ul><li>Poll to check for markers/Kicked off remotely </li></ul></ul></ul><ul><ul><ul><li>Kick off scripts passed as parameters </li></ul></ul></ul><ul><ul><ul><li>Copy the markers from build-rev to ‘done-revs’ </li></ul></ul></ul><ul><ul><ul><li>Kick off scripts to Parse the Test machines names +Tests from .txt files </li></ul></ul></ul><ul><ul><ul><li>Copy the markers to test machines </li></ul></ul></ul><ul><ul><li>Config files </li></ul></ul><ul><ul><ul><li>Normal text files containing- </li></ul></ul></ul><ul><ul><ul><ul><li>Test machine name </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Name of tests </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Type of release (Debug or normal) </li></ul></ul></ul></ul>
    17. www.testinggeek.com Build-Machine: Config File with machine name and Test
    18. Test Machine www.testinggeek.com <ul><ul><li>Automated-Test-Scripts </li></ul></ul><ul><ul><ul><li>Kicked off by the parameters in Schedule tasks </li></ul></ul></ul><ul><ul><li>Scheduled tasks after 10 minutes </li></ul></ul><ul><ul><ul><li>Poll to check for markers </li></ul></ul></ul><ul><ul><ul><li>Kick off scripts passed as parameters </li></ul></ul></ul><ul><ul><li>Send Mail utility + Log </li></ul></ul><ul><ul><ul><li>Mail the results to people in the list from the log </li></ul></ul></ul><ul><ul><li>Any automation tool </li></ul></ul><ul><ul><ul><li>Should be invoked from command line </li></ul></ul></ul>
    19. www.testinggeek.com sendmail.bat
    20. www.testinggeek.com All sounds quite complex... How about a demo?
    21. A CI Template www.testinggeek.com <ul><li>The process </li></ul><ul><li>Commit to repository </li></ul><ul><ul><li>post-commit hook appends new revision notification to revs queue </li></ul></ul><ul><li>(asynchronous) post new revision notification </li></ul><ul><ul><li>post any revs found into revs queue of build appliance  </li></ul></ul><ul><li>(asynchronous) build appliance pick-up of revs queue </li></ul><ul><ul><li>walk the revs queue: update and if file changes noted, build - move to done-revs notify team if successful build then post build notification to test appliance </li></ul></ul><ul><li>(asynchronous) test appliance pick-up of revs queue </li></ul><ul><ul><li>walk the revs queue: update and test - move to done-revs; notify team </li></ul></ul>
    22. A Boot Strap Script www.testinggeek.com <ul><li>The complete bootstrap script simply takes a root folder argument and creates: </li></ul><ul><ul><li>the repository + extra folders/files if required in the repo sub-folder </li></ul></ul><ul><ul><li>an example project in the repository </li></ul></ul><ul><ul><li>the revision queue check task </li></ul></ul><ul><ul><li>the folder for the &quot;build appliance&quot; checkout </li></ul></ul><ul><ul><li>the folder for the &quot;test appliance&quot; checkout </li></ul></ul><ul><ul><li>the post-commit hook </li></ul></ul><ul><ul><li>the script to post new revisions </li></ul></ul><ul><ul><li>the scheduled task to invoke the post new revisions script </li></ul></ul><ul><ul><li>the update/build/test scripts for the appliances in the scripts folder </li></ul></ul><ul><ul><li>the scheduled task to update and build the &quot;build appliance&quot;  </li></ul></ul><ul><li>        checkout </li></ul><ul><ul><li>the scheduled task to update and test the &quot;test appliance&quot;  </li></ul></ul><ul><li>       checkout </li></ul>
    23. A Boot Strap Script www.testinggeek.com   Final output of the script: ROOT - scripts - repo - build-appliance - test-appliance
    24. www.testinggeek.com boot-strap.bat It's that simple #1
    25. www.testinggeek.com post-revs.bat It's that simple #2
    26. www.testinggeek.com build-revs.bat It's that simple #3
    27. www.testinggeek.com test-revs.bat It's that simple #4
    28. www.testinggeek.com SHOW Me the DEMO please #$*#
    29. www.testinggeek.com setup of CI system using bootstrapper
    30. www.testinggeek.com CI tasks created by bootstrap
    31. www.testinggeek.com example developer change
    32. www.testinggeek.com output from CI system due to change
    33. QUESTIONS??? www.testinggeek.com
    34. www.testinggeek.com   Thanks Contact : Komal Joshi:         [email_address]   [email_address] Patrick Martin:    [email_address] Thanks To our team: Colin Towers, Ben Murray and Fergus Bown

    ×