drupal and continuous integration
play

Drupal and Continuous Integration DrupalCampNJ - 2014 Who we are - PowerPoint PPT Presentation

Drupal and Continuous Integration DrupalCampNJ - 2014 Who we are Henry Umansky Jason Howe Princeton University Drew University humansky@princeton. jhowe@drew.edu edu What is Continuous Integration? Continuous Integration is a software


  1. Drupal and Continuous Integration DrupalCampNJ - 2014

  2. Who we are Henry Umansky Jason Howe Princeton University Drew University humansky@princeton. jhowe@drew.edu edu

  3. What is Continuous Integration? “Continuous Integration 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

  4. Principles of CI? ● Maintain a code repository ● Automate the build ● Make the build self-testing ● Everyone commits to the baseline every day ● Every commit (to baseline) should be built ● Keep the build fast

  5. Principles of CI (cont’d) ● Test in a clone of the production environment ● Make it easy to get the latest deliverables ● Everyone can see the results of the latest build ● Automate deployment

  6. Advantages of CI ● prevent integration problems ● identify failing code early ● immediate unit testing of all changes ● "current" build for testing, demo, or releases

  7. Disadvantages of CI ● Initial setup time required ● Well-developed test-suite required to achieve automated testing advantages

  8. Maintain a code repository ● Version Control Systems: git or svn ● use Features as much as possible ● Strongarm Module

  9. Automate the Build ● Hudson/Jenkins ● Drush ● Build triggers

  10. Make the build self-testing ● Drupal Coder Review/Security Review ● Code Quality - [ php | css | js ] lint ● PhantomJS and Selenium ● Checkstyles/PHPMD

  11. Daily Commits ● Commit at least once a day ● Reduces potential conflicts ● Triggers automated builds

  12. Demo

  13. Automated Deployment ● Identical /dev/qa/prod systems ● Trivial to move code between environments ● Single button click to perform complex tasks

  14. Automated Deployment ● Single button click to deploy production code to n webservers. ● Deployment is simply a “git pull”, executed via remote ssh. ● Auto deployment to dev upon code commit to dev.

  15. Achieving Identical Environments ● Everything has to be automated, no lovingly handcrafted environments. ● Bash script fired by Jenkins, builds databases, instantiates drupal instance in all environments. ● Tools to sync content from prod->dev and code from dev->prod

  16. Known state of environments ● You always know that Dev contains everyone’s latest contributions. ● You always know that Prod is a copy of what’s in the repo.

  17. From the Operations Perspective ● Keep Server configs in (my.cnf, http.conf, etc) in a configuration repository. ● New webhead is trivial: ○ checkout config repo and run setup script. ○ symlinks config files, checkout drupal. ○ Essentially a self-configuring server ● Works for DR too!

  18. Other Advantages for Ops ● Knowing, without a doubt the current system state. ● Ability to spin up a test environment in minutes. ● Aids in troubleshooting and quick issue resolution. (Good comments commits help too)

  19. Questions?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend