views:

328

answers:

1

Hello, I am researching about how to set up CI and continuous deployment for a small team project for a Django based web application. Here are needs:

  • Developer check in the code into a hosted SVN server (unfuddle.com)
  • A CI server detects new checkin, check out the source, build, run functional tests.
  • If tests all passed, deploy the code to the webserver on Amazon EC2.

For now, the CI server is also responsible to run the functional tests. I figured out that I can use Husdon as the CI server, use Selenium to run functional tests, and use Fabric to deploy the build to remote web server in Amazon cloud.

I am new to Django development and not very familiar with opensource tools. My questions are:

  1. I can find some information to integrate hudson with selenium, but I couldn't find much information on how to integrate Fabric to Hudson as well. Is this setup viable? Do you see problems?
  2. How do I integrate and deploy database changes? Most likely in the early stage we will change database schema very often with code changes. I used to use Visual Studio and the database project made it very simple to deploy. I wonder if there is "established, well-supported" way to do that.

Thanks!!

+1  A: 

Can't help you very much with continuous integration/deployment - at my work we used CruiseControl and it acted very much as you describe, but I didn't have anything to do with setting it up.

However in answer to your second question, on database changes, the current state of the art in Django is to use South, which has just released version 0.7. It works well in a CI environment, as db migrations are stored alongside the code for each app, so the CI server can be set to run them automatically before running the tests.

Daniel Roseman
Thanks for suggesting South!
ycseattle