Staging Drupal: Change Management Strategies for Drupal

  • 6,326 views
Uploaded on

This presentation was created for DrupalCamp NH 2011.

This presentation was created for DrupalCamp NH 2011.

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Great presentation on staging Drupal at the NH Drupalcamp 2011.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
6,326
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
75
Comments
1
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Databases are great for storing and querying data, not great for versioning and merging changes
  • Databases are great for storing and querying data, not great for versioning and merging changes
  • Databases are great for storing and querying data, not great for versioning and merging changes
  • Databases are great for storing and querying data, not great for versioning and merging changes
  • Databases are great for storing and querying data, not great for versioning and merging changes

Transcript

  • 1.
    • Staging Drupal
    • Change Management Strategies for Drupal
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 2.
    • http://twitter.com/ebeyrent
    • http://drupal.org/user/23897
    DrupalCamp NH 2011 Introductions
    • Permissions API
    • Permissions Superuser
    • Crowd SSO
    • LDAP Extended Groups
    • Context Local Tasks
    • Search Lucene Biblio
    • Search Lucene Attachments
    • Search Lucene OG
    • Visual Search API
    My Modules Staging Drupal – Change Management Strategies Erich Beyrent
  • 3.
    • Agenda
    • Playing well with others
    • Managing code changes
    • Managing database changes
    • Managing content changes
    • Deployment strategies
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 4. The only thing that's constant is... DrupalCamp CT 2010
  • 5.
    • Staging? What is that?
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 6.
    • Staging? What is that?
    • “ Staging” is the process of delivering changes from one environment to another.
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 7.
    • I develop on the live server.
    • I work alone.
    • Backups?
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 8.
    • The Manual Process
    • Point.
    • Click.
    • Wait.
    • Rinse and repeat.
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 9. DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 10.
    • Why it fails
    • It's tedious.
    • It's time-consuming.
    • It's error-prone.
    • It's risky.
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 11.
    • The staging process should be:
    • Reliable
    • Repeatable
    • Scalable
    • Efficient
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies Staging Goals
  • 12. Anatomy of a Drupal Site DrupalCamp NH 2011 Staging Drupal – Change Management Strategies Files Configuration Content Code
  • 13.
    • A traditional approach
    • Use source control
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 14.
    • Use source control
    • Essential to the development and staging process
    • Manages changes to the code over time
    • With SVN, use a standard repository layout consisting of “tags, branches, trunk”
    • Use multiple repositories to separate core code from project code
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 15.
    • What goes into source control
    • Code, configuration, theme-based files
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 16.
    • What goes into source control
    • Code, configuration, theme-based files
      • Use source control templates for files like settings.php
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 17.
    • What goes into source control
    • Code, configuration, theme-based files
      • Use source control templates for files like settings.php
    • What about database snapshots?
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 18.
    • What goes into source control
    • Code, configuration, theme-based files
      • Use source control templates for files like settings.php
    • What about database snapshots?
      • Databases are great at storing and retrieving data, not merging and versioning
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 19.
    • What goes into source control
    • Code, configuration, theme-based files
      • Use source control templates for files like settings.php
    • What about database snapshots?
      • Databases are great at storing and retrieving data, not merging and versioning
    • What about files?
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 20.
    • A traditional approach
    • Use source control
    • Manage changes in code
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 21.
    • Manage database changes
    • Export your views, panels, rules, and content types to code
    • Use Exportables and Ctools to export other data
    • Manage configurations with Strongarm
    • Use Permissions API for roles and permissions
    • Use Features
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 22.
    • Why should we do this?
    • Multiple environments need to be updated
    • Allows for a phased approach to change management
    • Saves time and money
    • Is fully testable and reproducible
    • Minimizes downtime and helps manage expectations
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 23. Enable modules
    • function demo_update_7001() {
    • $ret = array();
    • $modules = array(
    • 'ctools',
    • 'context',
    • 'devel',
    • );
    • module_enable($modules, TRUE);
    • return $ret;
    • }
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 24. Grant permissions
    • function demo_update_7001() {
    • $ret = array();
    • $role = user_role_load_by_name('admin');
    • $permissions = user_permission_get_modules();
    • user_role_grant_permissions($role->rid, array_keys($permissions));
    • return $ret;
    • }
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 25. Create content types
    • function demo_update_7001() {
    • $types = array(
    • array(
    • 'type' => 'article',
    • 'name' => st('Article'),
    • 'base' => 'node_content',
    • 'description' => st('Description.'),
    • 'custom' => 1,
    • 'modified' => 1,
    • 'locked' => 0,
    • )
    • );
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011 foreach ($types as $type) { $type = node_type_set_defaults($type); node_type_save($type); node_add_body_field($type); } node_types_rebuild(); }
  • 26. Create taxonomy
    • function demo_update_7001() {
    • $ret = array();
    • $vocabulary = new stdClass();
    • $vocabulary->name = st('Categories');
    • $vocabulary->machine_name = 'categories';
    • $vocabulary->description = st('Standard node categories');
    • $vocabulary->hierarchy = 1;
    • $vocabulary->module = 'demo';
    • $vocabulary->weight = 0;
    • taxonomy_vocabulary_save($vocabulary);
    • return $ret;
    • }
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 27. Create taxonomy terms
    • function demo_update_7001() {
    • $ret = array();
    • $term = new stdClass();
    • $term->name = st('Drupal');
    • $term->description = st('Category for all things Drupal');
    • $term->parent = array(0);
    • $term->vid = $vocabulary->vid;
    • taxonomy_term_save($term);
    • return $ret;
    • }
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 28.
    • A traditional approach
    • Use source control
    • Manage database changes in code
    • Use deployment tools
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 29.  
  • 30.
    • Use deployment tools
    • Source control as a deployment tool
      • SVN update, post-commit hooks
      • GIT push
    • drush, rsync, make
    • Hudson, Phing
      • http://drupal.org/project/phingdrushtask
    • Capistrano
      • https://github.com/gaspaio/Drupal-Capistrano-Deploy
  • 31. Drupal Modules
    • Deploy
    • Context
    • Features
    • Ctools
    • UUID
    • Services
    • Boxes
    • Compare various staging modules:
    • http://drupal.org/node/980186
    Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 32.
    • The process
    • Import current database snapshot into your sandbox
      • Scrub your database!
    • Update your codebase
    • Develop, commit, update
    • Promote changes to QA environment, test
    • Tag or branch and release
    • Drink beer
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 33.
    • Test the process
    • Install the Demo module
    • Take snapshot
    • Run update.php
    • Verify results, watchdog, error_log
    • Rewind
    DrupalCamp NH 2011 Staging Drupal – Change Management Strategies
  • 34.  
  • 35. What about content?? Staging Drupal – Change Management Strategies DrupalCamp NH 2011
  • 36. What about content?? Staging Drupal – Change Management Strategies DrupalCamp NH 2011
    • Staging content in Drupal sucks
      • Several options, but none are 100% reliable
        • All depend on the UUID module
        • Deploy, Node Export, Migrate, Services
        • Error-prone, authentication issues, transport errors
  • 37.  
  • 38. Drupal 8
    • Proper configuration management
    • A robust entity API and UUIDs in core
    • Join the discussion at http://groups.drupal.org/build-systems-change-management/cmi
  • 39. Questions?
  • 40. Thank You! http://twitter.com/ebeyrent http://drupal.org/user/23897