Achieving Continuous Integration with Drupal



Similar documents
Improving your Drupal Development workflow with Continuous Integration

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

TestOps: Continuous Integration when infrastructure is the product. Barry Jaspan Senior Architect, Acquia Inc.

Continuous Integration and Delivery at NSIDC

What we're doing with Drupal at UChicago and how it can help you.

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Zero-Touch Drupal Deployment

Patterns to Introduce Continuous Integration to Organizations

Taking Drupal development to the Cloud. Karel Bemelmans

Git - Working with Remote Repositories

Hosting Drupal on Amazon Web Services (AWS) Heather Wozniak, Ph.D. Web Developer, UW College of Arts & Sciences hwozniak@uw.edu

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Putting It All Together. Vagrant Drush Version Control

Migrating into Drupal 8

Continuous Integration and Delivery. manage development build deploy / release

Streamline your drupal development workflow in a 3-tier-environment - A story about drush make and drush aliases

jenkins, drupal & testing automating every phing! miggle

A (Web) Face for Radio. NPR and Drupal7 David Moore

Eliminate Workflow Friction with Git

CURRENT STATE OF ICINGA

Continuous Integration. CSC 440: Software Engineering Slide #1

Software Continuous Integration & Delivery

DevOps Course Content

Building Success on Acquia Cloud:

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Fundamentals of Continuous Integration

Drupal 6 to Drupal 7 Migration Worksheet

Continuous Integration Processes and SCM To Support Test Automation

Modern practices TIE-21100/

StriderCD Book. Release 1.4. Niall O Higgins

How To Manage A Multi Site In Drupal

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

5 Mistakes to Avoid on Your Drupal Website

Simple Tips to Improve Drupal Performance: No Coding Required. By Erik Webb, Senior Technical Consultant, Acquia

Introduction to Version Control with Git

Continuous Integration

Best Practices for Application Release & Deploy Success Integrating Datical and IBM UrbanCode Deploy. What is slowing my application releases?

AVOIDING THE GIT OF DESPAIR

SQL Server Virtualization 101. David Klee, Group Principal and Practice Lead. SQL PASS Virtualization VC,

Git Branching for Continuous Delivery

The Nuts and Bolts of Autodesk Vault Replication Setup

Continuous Integration

CLOUD DEVELOPMENT BEST PRACTICES & SUPPORT APPLICATIONS

Instant Recovery for VMware

Understanding Code Management in a Multi-Vendor Environment. Examples of code management in a multi-team environment

Managing Projects Using Drupal 8 s Configuration Management System

Postgres Plus Cloud Database!

Introducing Xcode Source Control

How To Manage Change In Jeepers

Continuous Delivery at SAP: From dinosaur to spaceship. Darren Hague / SAP Global IT November 1st, 2013 Public

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

A central continuous integration platform

Data Center Automation with YADT

Best Practices for Deploying and Managing Linux with Red Hat Network

My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies

Automation and DevOps Best Practices. Rob Hirschfeld, Dell Matt Ray, Opscode

Java PaaS Enabling CI, CD, and DevOps

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Servers. Servers. NAT Public Subnet: /20. Internet Gateway. VPC Gateway VPC: /16

GOVERNMENT SERVICES. Open Source Software Development Web Content Management Mobile + Web Apps

DRUPAL WEBSITE PLATFORM BUYER S GUIDE

Drupal for Designers

Advanced Computing Tools for Applied Research Chapter 4. Version control

Distributed Agile Development in the Cloud

Migrating Trend Micro Mobile Security for Enterprise (TMMS) 8.0 to TMMS 9.0 Patch 1

Continuous Delivery for Force.com

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

SOA-14: Continuous Integration in SOA Projects Andreas Gies

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Handling Hyper-V. In this series of articles, learn how to manage Hyper-V, from ensuring high availability to upgrading to Windows Server 2012 R2

Continuous Integration

OpenMake Dynamic DevOps Suite 7.5 Road Map. Feature review for Mojo, Meister, CloudBuilder and Deploy+

Real World Enterprise SQL Server Replication Implementations. Presented by Kun Lee

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Test Automation: A Project Management Perspective

Ensuring scalability and performance with Drupal as your audience grows

Optimos Enterprise Helpdesk Automation Solution Case Study

RackWare Solutions Disaster Recovery

Automatic promotion and versioning with Oracle Data Integrator 12c

Data management on HPC platforms

Software configuration management

Automation & Open Source. How to tame the Cloud?

Delivering Quality Software with Continuous Integration

VMware vcenter Server 5.5 Deployment Guide TECHNICAL MARKETING DOCUMENTATION V 1.0/NOVEMBER 2013/JUSTIN KING

Transcription:

23 Au gu Achieving Continuous Integration with Drupal st 20 12

Achieving Continuous Integration with Drupal Drupalcon Munich 2012 Barry Jaspan barry.jaspan@acquia.com

The Evolution of a Drupal Developer

Stage 1: Hacking code directly on the server.

PRO: It s easy, fast, and efficient It s the quickest and cheapest way to get started New features are visible immediately Bugs are easy to replicate Feedback is immediate No time- sucking release engineering overhead

CON: It s a disaster (not) waiting to happen The slightest mistake causes a WSOD Encourages panic- driven engineering Impossible to demo without a release Nearly impossible to do with a team Basically, this never works beyond install a new module

Stage 2: Develop locally, push to production

PRO: Safer, and works with teams Most obvious bugs never make it to production Normal software development process are possible Team development becomes possible Version control to share and log changes Everyone uses a local copy of the prod database

CON: Releases are slow and scary Release process 1. Announce a feature freeze 2. Merge everyone s changes to release engineer s machine 3. Test, find bugs, point fingers, fix bugs 4. Copy code to production servers 5. Manually upgrade the production environment 6. Find new bugs, scramble to fix or revert

Can we do better?

Stage 3: Continuous Integration Testing Deployment Fancy words for good software engineering practice.

Use a source code repository Step zero for good software engineering It mostly doesn t matter which one you use Version everything Code, tests, documentation, libraries, dependencies,... Keep it simple Main branch and tags Temporary, private feature branches Release branches only for major changes

Integrate code constantly Break big features into small steps Automate the upgrade process Implement tests as you go Commit changes often Update from main branch daily Reduce integration conflicts, surface problems sooner

Sidebar: Commits, Code Reviews, and Architecture

Automate testing If it ain t broke, test it anyway. Functionality: WSOD, unit, browser- based,... Performance Upgrade Start testing new things, don t wait for time to catch up Run tests on every commit No patch is done until all the tests pass Announce when the tests fail Deploy frequently to an accessible QA area Stakeholders can always see current progress

Test in a clone of production It worked on my machine! Drupal depends heavily on its environment OS, Apache/MySQL/other daemons, PHP extensions, PEAR libraries, assorted packages It worked on the testing database! Current (scrubbed) version of production database Production has a different config... Manual server tweaks will always get lost Unify and automate build of all environments This is the part you probably do not (want to) do yourself

Automate deployment Deployment should be a push- button- and- relax operation Tag each release for future reference or rollback Snapshot databases for rollback Deploy code to server(s) Apply upgrade changes to database No patch is done until the upgrade is automated

How do I get there?

Continuous Integration is an attitude, not a tool. - James Shore

DIY Drush has commands for most operations Code git tag && drush rsync @dev @test Files drush rsync @dev:%files @test:%files Database drush sql-sync @dev @test --sanitize cat scrub.sql drush @test sql-cli Testing drush @test test-run drush @test ssh./other-tests.sh

But... welcome to DevOps Git/SVN server Many scripts/jenkins jobs Deploy on commit Copy DB/files for dev Test on deploy Tag and release on success... etc... OS management Server build Security updates Multiple web vhosts Domains, SSL, php.ini,... Multiple databases Manage credentials HA, memcached, Varnish, Tomcat, Jenkins, Solr,... Scaling all of this Backups and restores 24/7 monitoring

Pay someone else

The Drupal Config/Content Staging Problem Configuration The UI is only for prototyping! Update functions Features module D8 Configuration Management Initiative Content CI is about software development, not content management, but since someone always asks... Enterprise Drupal Application Scaling by Michael Cooper, Drupal Watchdog, August 2012 Modules: Migrate, Node Import/Export, Deploy

23 Au What did you think? Please rate this session on the DrupalCon Munich website: http://munich2012.drupal.org/node/409 Thank you! gu st 20 12

Questions? Barry Jaspan barry.jaspan@acquia.com Twitter: @bjaspan Senior Architect Acquia, Inc.

23 Au What did you think? Please rate this session on the DrupalCon Munich website: http://munich2012.drupal.org/node/409 Thank you! gu st 20 12