Python/Django的TeamCity持续集成
我在一台运行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....
出现在输出中。