3. Use version control.
(Decentralized VCS recommended)
Git
Mercurial
Bazaar
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
4. Use version control.
(Decentralized VCS recommended)
Git ActiveLAMP uses this one
Mercurial
Bazaar
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
5. Turnkey
Version Control
Github (https://github.com/)
Unfuddle (http://unfuddle.com/)
Beanstalk (http://beanstalkapp.com/)
Gitosis (Roll your own)
6. Turnkey
Version Control
Github (https://github.com/)
Unfuddle (http://unfuddle.com/)
Beanstalk (http://beanstalkapp.com/)
Gitosis (Roll your own)
ActiveLAMP uses this one
7. Use an issue tracker
Basecamp (http://basecamp.com/)
Github
Unfuddle
Open Atrium (Roll your own http://openatrium.com/)
8. Use an issue tracker
Basecamp (http://basecamp.com/)
Github
Unfuddle
Open Atrium (Roll your own http://openatrium.com/)
ActiveLAMP uses this one
13. Time tracking features
https://github.com/fuseinteractive/Atrium-
Time-Tracker
https://github.com/fuseinteractive/Atrium-
Time-Tracker-Reports
14. Have good reporting.
We use AppleScript to take data from Atrium
and populate spreadsheets for easier analyzing
of time and resources.
Analyze data in spreadsheets. (Quicker)
18. Code should
be kept upstream
Don’t hack code. If it’s not your code, DO NOT
put it into your own repo.
Use drush make to patch code pulled from
upstream.
19. Good reading material
(Keeping code upstream)
http://developmentseed.org/blog/2009/oct/
27/drupal-distributions-drush-make/
http://walkah.net/blog/every-drupal-site-
install-profile/
20. Only custom code in
your custom repo.
site.make
.gitignore
rebuild.sh
And the rest of your custom code:
themes/custom/mycustomtheme
modules/custom/mymodule
22. We use Capistrano
Installs as a Ruby Gem
Already contains all the rich logic you need.
https://github.com/capistrano/capistrano/wiki/Documentation-v2.x
23. How Deploys Work
Capistrano logs into remote server via ssh
Checks out the latest code for specified branch
in new directory that it creates
Runs rebuild.sh to build the make file
On Success, symlinks the new directory to
where Drupal (or Apache) is looking for it.
Automatically rolls back if any errors.
24. How Rollbacks Work
A new “release” is created on every deploy.
Symlink is changed so that it points to the
previous release.
25. This is a
NON-DESTRUCTIVE
deploy.
(It’s a good idea to backup your
database before running update.php)
26. Thank you.
Questions?
Tom Friedhof
Developer at ActiveLAMP
Twitter: @activelamp @tomfriedhof
www.activelamp.com