views:

393

answers:

2

I've set up TeamCity on a Linux (Ubuntu) box and would like to use it for some of Python/Django projects.

The problem is that I don't really see what to do next - I tried searching for a Python specific build agent for TeamCity but without much of the success.

How can I manage that?

A: 

You need to answer yourself - what do you expect from the CI tool to do when building.

Is it like running manage.py start?

I am not familiar with TeamCity, but I believe there's a simple way to have build agent that simply runs a single command.

Grzegorz Oledzki
it also needs to collect and parse output, I guess
Art
+4  A: 

Ok, so there's how to get it working with proper TeamCity integration:

Presuming you have TeamCity installed with at least 1 build agent available

1) Configure your build agent to execute

manage.py test

2) Download and install this plugin for TC http://pypi.python.org/pypi/teamcity-messages

3) You'll have to provide your custom test runner for plugin in (2) to work. It can be straight copy of run_tests from django.test.simple, with only one slight modification: replace line where test runner is called with TeamcityTestRunner, so insted of

def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]):
    ...
    result = unittest.TextTestRunner(verbosity=verbosity).run(suite)

use this:

def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]):
    ...
    result = TeamcityTestRunner().run(suite)

You'll have to place that function into a file in your solution, and specify a custome test runner, using Django's TEST_RUNNER configuration property like this:

TEST_RUNNER = 'my_site.file_name_with_run_tests.run_tests'

Make sure you reference all required imports in your file_name_with_run_tests

You can test it by running

./manage.py test

from command line and noticing that output has changed and now messages like

#teamcity....

appearing in it.

Art