« Forum sort order | Main | Wuala - P2P Online Storage Cloud »
Monday
Aug182008

Code deployment tools

G'day,

I'm building an application to manage WordPress PHP code on many servers. Our application will push down code updates to each server, as well as performing backups and testing.

I'm considering different methods of pushing updated code onto the individual servers. I'm considering something like Capistrano (I've no experience in Ruby though). I've also considered using subversion and then remotely calling svn commands via SSH.

Are there any other tools specifically for this purpose? The servers will have persistent data (the WordPress databases) so I don't want to re-image them every update. Plus, they will each have a different set of plugins / themes, so building many images would be too complex.

If there are any papers on code deployment, or other recommended reading, please point the links my way.

Likewise, if anyone has any suggestions, or would like more details, just let me know.

Cheers - Callum.

Reader Comments (4)

There are a few more, like puppet. Take a look at http://highscalability.com/tags/operations and http://highscalability.com/tags/product. I don't think subversion will work well on its own because it doesn't contain features like dependency management, rollback, and class specific policies.

December 31, 1999 | Unregistered CommenterTodd Hoff

Hey Todd,

Puppet looks intriguing. I'm wondering if it's overkill for this application though. I'm not managing the servers, or at least that's a separate task. I'm simply managing the WordPress code. So when an update is released, we test that update, then we deploy it. We run a backup, dump the new code onto the server, run the upgrade process, run another backup, test the results, and either exit or roll back if there were errors.

Do you think puppet is appropriate for that type of setup? I'm reading through the documentation and it seems like it's geared more at deploying whole servers, services, users, and so on.

I was considering using SVN to deploy the new code. For example, an update is released, we test it, approve it, commit it to svn. Then as part of the upgrade process, to roll out the new code, we `svn up`. If there's an error, we can go backwards with `svn up -r 123`.

I'll continue reading about puppet to learn a bit more. Even if it's not applicable here, it looks like a useful tool, thanks for the tips.

Cheers - http://www.callum-macdonald.com/" title="Callum" target="_blank">Callum

December 31, 1999 | Unregistered Commenterchmac

Another tool that can provide a backbone for such tasks is func:
https://fedorahosted.org/func

December 31, 1999 | Unregistered CommenterAnonymous

Have you had a look at http://phing.info? Its PHP port of Apache Ant.
Very flexible and extensible. Deployment can be configured inside a single xml file. You can create your own custom tasks if you want additional functionality.

This is a handy extension to Phing. http://www.fedecarg.com/wiki/filesynctask

December 31, 1999 | Unregistered CommenterAnonymous

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>