For the last several years the Drupal community has had a conversation about the best way to set up version control on a Drupal site that has a proper development stack consisting of local, development, staging, and production environments.

One camp likes to track the entire site including core and contributed module files. Proponents like how this allows us to see changes to files across the entire site on each environment, while detractors suggest this is unnecessary and inefficient given that we're not planning to ever change the vast majority of the codebase in the site (Drupal core + contributed modules).

The other camp likes to utilize tools like Drush Make to build sites using .make files and then track only those files unique to this particular site, excluding both Drupal core and contributed modules. Proponents suggest this is a more efficient and honest architecture, whereas detractors lament the lack of control and potential DevOps headache this creates when it comes time to deploy the site from one environment to another.

This talk will demonstrate how we can have the best of both worlds by setting up a DevOps infrastructure that capitalizes on Git's versatility for both version control and DevOps, which will allow us to develop efficiently yet still maintain full control of the entire site codebase.

The demonstration will take advantage of Drupal's wonderful install profile concept and Drush Make to build sites and track only the unique code for the site in Git. It will then connect the dots by automating a build process that prepares the site for testing, deployment, and contribution from other developers.

Session Objectives

  • Shine light on how DevOps can solve longstanding riddles with Drupal site version control
  • Provide an explanation of Drush Make and how it can alter your development workflow to help you write more reusable code
  • Make a case for why "Every site [can be] an Install Profile"
  • Show how you can successfully integrate a build process into your development workflow
  • Illustrate how to minimize your code footprint, automate all the things, and allow you to hone in and focus on only what's important to building your site

Kevin is a Senior Drupal Developer and project lead at ImageX Media where he helps suss out how an inheritable profile architecture can improve Drupal development and deliver better results.