Towards an Automated Build/CI System for Servers, Configuration and Drupal
At the University of New Brunswick Libraries, we have a very small IT team tasked with maintaining dozens of Drupal instances, as well as a meeting a demand for constant new Drupal development.
Historically, this generated a tremendous support burden. This session presents our evolution from (unsustainable) manual, on-disk management of Drupal instances (with on-site live development) towards a fully tracked CI centered workflow that creates, updates and tests all of our instances.Concepts
- Determining and implementing a common server base across Development/Staging/Live platforms.
- Bare metal provisioning with razor-server
- Tracking all server configuration in Git and deploying to instances via bare repos.
- 'One Button' Drupal project and core update deployments via GitHub and Jenkins.
- Post-deployment testing with CasperJS
- Local development spin-up with Vagrant, Chef
- Continuous automated testing of live instances : security_review, site_audit, drupalgeddon
- Notifications of all activity through Amazon SNS to the team
This system was implemented over several years with the help of DevOps track sessions at various DrupalCon NA gatherings (2012, 2013, 2014).
My hope is the session will be helpful for those looking to transition towards a CI/DevOps/Virtualized workflow (and perhaps for those with existing deployment systems that are looking for ways to improve).
I would welcome the feedback from this presentation that would make our current system even better.