1 / 10

Build and Release Engineering

Build and Release Engineering. It’s all about automation Jez Humble ThoughtWorks Technologies India Pvt Ltd. What is continuous integration?. Keep all your project artefacts in source control (even on a one-person project) Write a script which builds your software and runs tests on it

davin
Download Presentation

Build and Release Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Build and Release Engineering It’s all about automation Jez Humble ThoughtWorks Technologies India Pvt Ltd

  2. What is continuous integration? • Keep all your project artefacts in source control (even on a one-person project) • Write a script which builds your software and runs tests on it • Every time you add a feature, check in to source control • Walk over to a machine dedicated to continuous integration, check out the latest version of the code, run the script

  3. Why bother? • Dramatically reduces number of bugs - the default state of your application will be “working in a deployment-like environment” • Quick feedback on who broke the app and what changes broke it • Enforces discipline of checking in regularly, therefore less merge hell • Everyone can see what’s happening • Easy to get the latest executable • Makes deployment a snap – therefore quicker feedback from customers • Creates a natural break for you to think and chat to others

  4. Automating build and deployment • First of all – get continuous integration working • Then follow the following principles: • 1. Automate testing and deployment – use several independent testing stages if the tests take too long • 2. Check working code in regularly – “continuous” is more often than you think • 3. Deploy the same artefacts in every environment – manage your runtime configuration separately

  5. Deploy the same binaries in every environment Software Configuration available from source control, or via LDAP or RESTful web service etc. Binaries Configuration

  6. Use several independent testing stages Unit tests Functional smoke tests Manual UAT Binary Functional “happy path” tests Performance tests Full functional test suite GUI tests

  7. Automate deployment,using slices and virtualisation Apache 1 WebLogic 1 Apache 2 WebLogic 2 Apache 3 WebLogic 3 ..etc ..etc

  8. Run smoke tests • Can I connect to the DB? • Is my app server cluster up? • Is the right version of my app installed? • Can I send test messages across my messaging bus? • Can I ping external systems?

  9. Evolve yourproduction line along with the application it assembles Versioned Repository Source Repository (unit tests, functional tests and code) Configuration Repository (environment specific configuration files) Package Repository (valid binaries) Commit Commit Checkout Checkout Checkout Checkout Tag Tag Tag Development Unit Tests Production QA Functional Tests Performance UAT Environments Tests, code and configurations are created. Some manual testing occurs Automated build executes all unit tests and checks in binaries Functional tests are automatically executed against binaries Release candidate is tagged and deployed for further testing Release candidate is deployed to production Changes move through the automated deployment production line

  10. Resources • http://www.martinfowler.com/articles/continuousIntegration.html • http://buildix.thoughtworks.com/ • http://www.jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html • http://www.scmpatterns.com/

More Related