for every site a make file

97
vps.net 25. aug 10:00 For every site, a .make file Jeff Miccolis Wednesday, August 25, 2010

Upload: development-seed

Post on 27-Jun-2015

2.627 views

Category:

Technology


1 download

DESCRIPTION

Presented at DrupalCon Copenhagen by Jeff Miccolis.

TRANSCRIPT

Page 1: For every site a make file

vps.net25. aug 10:00

For every site, a .make file

Jeff Miccolis

Wednesday, August 25, 2010

Page 2: For every site a make file

I build drupal sitesI co-maintain Open AtriumI contribute to drush_make

Wednesday, August 25, 2010

Page 3: For every site a make file

You build drupal sitesYou’ve heard of drushYou’ve had deployment issues

Wednesday, August 25, 2010

Page 4: For every site a make file

If I’m lucky, you’ve used the Features module.

Wednesday, August 25, 2010

Page 5: For every site a make file

Problems, Tools, Gotchas...and your questions

Wednesday, August 25, 2010

Page 6: For every site a make file

a) Problems

Wednesday, August 25, 2010

Page 7: For every site a make file

The reality of deploying and maintaining drupal is ugly.

Wednesday, August 25, 2010

Page 8: For every site a make file

The standard way of deploying drupal...

Wednesday, August 25, 2010

Page 9: For every site a make file

...involves committing everything to a project specific SVN repository.The standard way of deploying drupal...

Wednesday, August 25, 2010

Page 10: For every site a make file

...and then using that SVN repository to “manage” production.The standard way of deploying drupal...

Wednesday, August 25, 2010

Page 11: For every site a make file

...is a heck of a lot better than nothing.The standard way of deploying drupal...

Wednesday, August 25, 2010

Page 12: For every site a make file

But what version of the Date module are you using there?

Wednesday, August 25, 2010

Page 13: For every site a make file

The last ‘stable’ release was September 16th, 2009Which version of Date module is that?

Wednesday, August 25, 2010

Page 14: For every site a make file

The last ‘stable’ release doesn’t work with php 5.3Which version of Date module is that?

Wednesday, August 25, 2010

Page 15: For every site a make file

Chances are you’re using a CVS checkout.Which version of Date module is that?

Wednesday, August 25, 2010

Page 16: For every site a make file

With a patch (or two) applied.Which version of Date module is that?

Wednesday, August 25, 2010

Page 17: For every site a make file

Do you know where your children are?

Wednesday, August 25, 2010

Page 18: For every site a make file

...and to make matters worse...

Wednesday, August 25, 2010

Page 19: For every site a make file

SA-CONTRIB-2010-666** not real **

Wednesday, August 25, 2010

Page 20: For every site a make file

...and you haven’t seen this site in 4 months.

**happens all the time**

Wednesday, August 25, 2010

Page 21: For every site a make file

The kids are in trouble.

Wednesday, August 25, 2010

Page 22: For every site a make file

We hack our way through. Commit semi-random patches and `svn co` production.The standard way of deploying drupal...

Wednesday, August 25, 2010

Page 23: For every site a make file

We can improve the ‘standard way’

Wednesday, August 25, 2010

Page 24: For every site a make file

Duplicative repositoriesProblems with the standard way...

Wednesday, August 25, 2010

Page 25: For every site a make file

Logs that mix of upstream fixes and custom workProblems with the standard way...

Wednesday, August 25, 2010

Page 26: For every site a make file

Too much detective work.Problems with the standard way...

Wednesday, August 25, 2010

Page 27: For every site a make file

Doesn’t make upstream contributions easy.Problems with the standard way...

Wednesday, August 25, 2010

Page 28: For every site a make file

Makes hacking upstream projects easy.Problems with the standard way...

Wednesday, August 25, 2010

Page 29: For every site a make file

b) Tools

Wednesday, August 25, 2010

Page 30: For every site a make file

Drush, Command line Drupal.http://drupal.org/project/drush

Wednesday, August 25, 2010

Page 31: For every site a make file

CLI?!?! WTF?!?!

Wednesday, August 25, 2010

Page 32: For every site a make file

Fast and scriptable.

Wednesday, August 25, 2010

Page 33: For every site a make file

**DRUSH_ DEMO**

Wednesday, August 25, 2010

Page 34: For every site a make file

Drush Makehttp://drupal.org/project/drush_make

Wednesday, August 25, 2010

Page 35: For every site a make file

It’s how we package install profiles on drupal.orgdrush_make is...

Wednesday, August 25, 2010

Page 36: For every site a make file

Not a Drupal module, a Drush extension!drush_make is...

Wednesday, August 25, 2010

Page 37: For every site a make file

This means it doesn’t need a Drupal site.

Wednesday, August 25, 2010

Page 38: For every site a make file

Installed in ~/.drushdrush_make is...

Wednesday, August 25, 2010

Page 39: For every site a make file

Used to make a ready to install Drupal platform.drush_make is...

Wednesday, August 25, 2010

Page 40: For every site a make file

Doesn’t Drupal come ‘ready to install’?

Wednesday, August 25, 2010

Page 41: For every site a make file

...when was the last time you deployed ‘just Drupal’?

Wednesday, August 25, 2010

Page 42: For every site a make file

Drupal core + views + cck + date...and probably a lot more.

Wednesday, August 25, 2010

Page 43: For every site a make file

A .make file is a manifest for your site.

Wednesday, August 25, 2010

Page 44: For every site a make file

core = 6.xprojects[] = drupal

Wednesday, August 25, 2010

Page 45: For every site a make file

projects[cck][subdir] = "contrib"projects[cck][version] = "2.8"

Wednesday, August 25, 2010

Page 46: For every site a make file

; This is a comment;; In short .make files use; .info file formatting.;; Also drush_make has a great; README.txt

Wednesday, August 25, 2010

Page 47: For every site a make file

projects[date][type] = "module"

projects[date][download][type] = "cvs"

projects[date][download][module] = "contributions/modules/date"

projects[date][download][revision] = "DRUPAL-6--2:2010-06-20"

Wednesday, August 25, 2010

Page 48: For every site a make file

projects[litecal][type] = "module"

projects[litecal][download][type] = "git"

projects[litecal][download][url] = "git://github.com/./litecal.git"

Wednesday, August 25, 2010

Page 49: For every site a make file

**DRUSH_MAKE DEMO**

Wednesday, August 25, 2010

Page 50: For every site a make file

Why can’t you generate the make file automatically?Question.

Wednesday, August 25, 2010

Page 51: For every site a make file

Text

http://drupal.org/project/cckWednesday, August 25, 2010

Page 52: For every site a make file

Wednesday, August 25, 2010

Page 53: For every site a make file

Wednesday, August 25, 2010

Page 54: For every site a make file

Projects vs. ModulesAnswer.

Wednesday, August 25, 2010

Page 55: For every site a make file

What about bugs in contrib module?Question.

Wednesday, August 25, 2010

Page 56: For every site a make file

Answer.

projects[prepopulate][patch][] = "http://../360613_20100812.patch"

Wednesday, August 25, 2010

Page 57: For every site a make file

What about random javascript libraries?Question.

Wednesday, August 25, 2010

Page 58: For every site a make file

libraries[jquery_ui][download][type] = "get"

libraries[jquery_ui][download][url] = "http.."

libraries[jquery_ui][directory_name] = "jquery.ui"

libraries[jquery_ui][destination] = "modules/contrib/jquery_ui"

Answer.

Wednesday, August 25, 2010

Page 59: For every site a make file

Isn’t it slow to do all this downloading?Question.

Wednesday, August 25, 2010

Page 60: For every site a make file

Finally, a useful purpose for squid!http://reluctanthacker.rollett.org/node/114

Wednesday, August 25, 2010

Page 61: For every site a make file

Can I reuse snippits of make files somehow?Question.

Wednesday, August 25, 2010

Page 62: For every site a make file

Yes, two ways; recursion & inclusion.Answer

Wednesday, August 25, 2010

Page 63: For every site a make file

Recursion: if a project has a .make file it will be run.

Wednesday, August 25, 2010

Page 64: For every site a make file

Recursion: Avoid it.*Rarely useful, mostly confusing.*except with install profiles.

Wednesday, August 25, 2010

Page 65: For every site a make file

Inclusion: Allow a make file to reference another make file.

Wednesday, August 25, 2010

Page 66: For every site a make file

Inclusion: Use it.References via URLs, items in the referenced file can be overridden.

Wednesday, August 25, 2010

Page 68: For every site a make file

Use overrides to grab CVS checkouts, experimental forks, more recent versions, etc

Wednesday, August 25, 2010

Page 69: For every site a make file

Ok, cool. How do I use this again?

Wednesday, August 25, 2010

Page 70: For every site a make file

**BUILDKIT DEMO**

Wednesday, August 25, 2010

Page 71: For every site a make file

c) Gotchas, best practices, concepts, etc...

Wednesday, August 25, 2010

Page 72: For every site a make file

Make files are portable.They’re manifests, not a personal ‘save’ button

Wednesday, August 25, 2010

Page 73: For every site a make file

Tag versions.If your make file is pointing at HEAD it’s not doing it’s job.

Wednesday, August 25, 2010

Page 74: For every site a make file

Use comments &Link patchesA few words can help a lot.

Wednesday, August 25, 2010

Page 75: For every site a make file

Profile .make vs. Distro .make

Wednesday, August 25, 2010

Page 76: For every site a make file

Used to make an install profile. No Core.profile .make

Wednesday, August 25, 2010

Page 77: For every site a make file

It’s what we use on Drupal.orgprofile .make

Wednesday, August 25, 2010

Page 78: For every site a make file

Includes core.distro .make

Wednesday, August 25, 2010

Page 79: For every site a make file

Is what I use for Openatrium.comdistro .make

Wednesday, August 25, 2010

Page 80: For every site a make file

The distro .make retrieves and builds the profile.make.distro .make

Wednesday, August 25, 2010

Page 81: For every site a make file

This is the one place the recursion behavior works for us.distro .make

Wednesday, August 25, 2010

Page 82: For every site a make file

Small scripts go a long way.Like Open Atrium’s rebuild.sh

Wednesday, August 25, 2010

Page 83: For every site a make file

You’ll still want a project repository.

Wednesday, August 25, 2010

Page 84: For every site a make file

An install profile.You’r new project repository.

Wednesday, August 25, 2010

Page 85: For every site a make file

Custom themes and modules.Your new project repository.

Wednesday, August 25, 2010

Page 86: For every site a make file

A rebuild script.Your new project repository.

Wednesday, August 25, 2010

Page 87: For every site a make file

Nothing that already has a home.Your new project repository.

Wednesday, August 25, 2010

Page 88: For every site a make file

Forking projects and contributing back.

Forking for karma.

Wednesday, August 25, 2010

Page 89: For every site a make file

The patches in your make file need to be public.

Forking for karma.

Wednesday, August 25, 2010

Page 90: For every site a make file

Write patches that have a chance...

Forking for karma.

Wednesday, August 25, 2010

Page 91: For every site a make file

Post them on the project’s issue queue.

Forking for karma.

Wednesday, August 25, 2010

Page 92: For every site a make file

What if everyone did this?

Forking for karma.

Wednesday, August 25, 2010

Page 93: For every site a make file

In conclusion, two things;

Wednesday, August 25, 2010

Page 94: For every site a make file

a) I don’t ever want to wonder; did we apply that patch to this site?

Wednesday, August 25, 2010

Page 95: For every site a make file

b) patches belong upstream. Let’s keep them there.

Wednesday, August 25, 2010

Page 96: For every site a make file

Questions?

Wednesday, August 25, 2010

Page 97: For every site a make file

http://cph2010.drupal.org/node/14588

Wednesday, August 25, 2010