Python/Django的TeamCity持续集成

15 投票
2 回答
14501 浏览
提问于 2025-04-15 12:44

我在一台运行Linux(Ubuntu)的电脑上安装了TeamCity,想用它来处理一些Python/Django的项目。

不过现在我有点不知道接下来该怎么做了——我试着找一个专门用于Python的TeamCity构建代理,但没什么进展。

我该怎么解决这个问题呢?

2 个回答

5

我在TeamCity的问题追踪系统上提交了一个功能请求,希望能增加对Python的全面支持。这个链接是:http://youtrack.jetbrains.com/issue/TW-25141。如果你感兴趣,可以给这个请求投票,这样可能会促使JetBrains改善对Python的支持。

25

好的,下面是如何让它与TeamCity正常集成的方法:

假设你已经安装了TeamCity,并且至少有一个构建代理可用。

1) 配置你的构建代理来执行

manage.py test

2) 下载并安装这个TeamCity的插件 http://pypi.python.org/pypi/teamcity-messages

3) 你需要提供一个自定义的测试运行器,这样插件才能正常工作。你可以直接复制django.test.simple中的run_tests函数,只需稍微修改一下:把调用测试运行器的那一行替换成TeamcityTestRunner,所以要用这个:

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

用这个:

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

你需要把这个函数放到你项目中的一个文件里,并使用Django的TEST_RUNNER配置属性来指定自定义的测试运行器,像这样:

TEST_RUNNER = 'my_site.file_name_with_run_tests.run_tests'

确保在你的 file_name_with_run_tests 文件中引用了所有必需的导入。

你可以通过在命令行运行

./manage.py test

来测试它,注意输出已经改变,现在会出现像这样的消息:

#teamcity....

出现在输出中。

撰写回答