Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011

  • 1,436 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,436
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
10
Comments
0
Likes
1

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

Transcript

  • 1. Drupal development: The workflow Anna Fedoruk, Sterno.ru
  • 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 http://ashearer.com/software/server-administration/migraine• D6 modification by mukesh.agarwal17 http://www.blisstering.com/migraine-synchronize-your- 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: http://developmentseed.org/blog/2009/may/29/making-and-using-features-drupal
  • 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 http://www.slideshare.net/drupalindia/migraine-drupal-syncing- your-staging-and-live-sites-presentation• More about Features o http://developmentseed.org/blog o http://nuvole.org/blog/code-driven-development o http://openatrium.com/
  • 32. Contacts Anna Fedoruk, Sterno.ru afedoruk@sterno.ru @sternodevteam http://devteam.sterno.ru