Your SlideShare is downloading. ×
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011


Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Drupal development: The workflow Anna Fedoruk,
  • 2. Gold Sponsor ofDrupalCamp Kyiv 2011
  • 3. Silver Sponsors ofDrupalCamp Kyiv 2011
  • 4. Table of contents1.Dark side of Drupals power2.Whats the problem and how to deal with settings in DB3.Approach 1: migraine-powered workflow4.Approach 2: features-driven development
  • 5. Why developers cry?Drupal is great:• Flexible• Build whatever you want• Powerful tools like CCK, Views, Rules, Panles etc. So whats the problem?
  • 6. Why developers cry?OMG, the settings in DB!• Enabled modules and their settings• Blocks, taxonomy vocabularies, CCK content types• User roles, permissions• Views, Rules, Contexts, Panels...
  • 7. Why developers cry?Migrations of DB-ed settings are very time- consuming, boring and error-prone
  • 8. What can we do?We need to:• Track configuration changes• Migrate these changesApproaches:• Migrate changes in DB via versioned dumps• Move settings into code: Features ecosystem
  • 9. The developers best friend: DrushTons of useful tools:• Modules enabling, disabling, downloading• Updates• Cache clearing• Dumps, backups, sync• ...• + modules add-ons
  • 10. Approach 1: versioned DB dumps
  • 11. Our experience with Migraine• Migraine by Noosphere Networks• D6 modification by mukesh.agarwal17 development-staging-and-production-sites-databases-drupal-6• drush• drush add-on by Danil Semelenov
  • 12. The point of MigraineMigraine knows how to deal with different types oftables: • Config tables • Content tables • Temporary tables • Cache tables • Ignore tables
  • 13. Migraine Drush add-onA wrapper for migraine commands:• Create local DB dump• Restore DB from local dump• Full site migration including source code and DB• Sync files on local server with remote server
  • 14. Migraine: workflowDeveloper 1: Developer 2:• Works with code and • pull configuration • Restores from special• Makes special dump dump• Lets Migraine know • Config migrates! about new tables (if any)• commit, push
  • 15. Migraine: workflowMigration from @dev to @test:• Make special dump• Sync files• Migrate DBMigration from @dev to @prod:• Migration doesnt affect content tables• Manually correct content tables schema
  • 16. Migraine: pros and consAdvantages:• As all tables are classified, no need to think• Doesnt require anything from componentsDisadvantages:• Hard to resolve conflicts in dumps• Chaos reigns• In fact you still need to think
  • 17. Approach 2: code-driven development
  • 18. Features: the ideaImage source:
  • 19. Features• Code-driven development: put all the settings into code• Features know how to deal with Views, CCK, Imagecahe, node types, user roles and permissions, Panels, Contexts, Rules and more
  • 20. Features ecosystem• Features• Ctools exportables• Strongarm — variables• Boxes — custom blocks (replaces core «add block»)• Context — blocks, breadcrumbs and so on• Diff — a tool for work with features states
  • 21. Feature is a module• .info — meta-info, dependencies• .module — place your code here• .install — usual install file• .features.incConfiguration blocks:• feature_name.<smthng>.inc — generated by Features module
  • 22. Feature state can be:• Default — config in code = config in DB• Overriden — config in code != config in DB (needs revert or update)• Needs review — config in code != config in DB, code was changed
  • 23. A feature workflowDeveloper 1 Developer 2• Creates feature • Pull• Enables feature • Enables/revert feature• Works with config • Config migrates!• Updates feature• commit, push
  • 24. Features management• Web UI• Drush commands: o view features list o creates new feature o updates code state from DB o updates DB state from code (revert) o view differencies between code and DB states
  • 25. Features without UITo create feature or add component:• Add meta-info and dependencies in .info file• Update feature
  • 26. What about our coworkers?feature is a module, so one can use hook_install()и hook_update() to: • Enable modules • Add roles, url aliases etc. • Any custom codehook_update() to share with those who work in thesame timehook_install() to share with new developers
  • 27. Contoller feature• Includes other features as dependencies• hook_install() and hook_updates() relfect general changes in the sites state
  • 28. Features: The Workflow
  • 29. Features: advantages• Easy to work with code in VCS• Features are reusable• Beautiful
  • 30. Features: disadvantages• Requires more efforts to keep systems state up- to-date• Complex dependencies• Some components arent exportable
  • 31. Useful links• More about Migraine o your-staging-and-live-sites-presentation• More about Features o o o
  • 32. Contacts Anna Fedoruk, @sternodevteam