Python-Django 使用 Hudson做CI服务器实践记

原创 2012年03月31日 14:34:50

Python-Django 使用 Hudson做CI服务器实践记


作者:Wally Yu

CSDN:http://blog.csdn.net/quicktest

微博:http://www.weibo.com/quicktest

我的环境:

开发环境: Windows XP

运行环境:Ubuntu 11

Python:2.7

Django:1.3.1


国内没有找到比较好的翻译和实践性的博文,于是去了Google,按照一篇文章的做法一步步实现,实践到“Displaying unit test results”的时候因为原文使用了自己的bash,而我需要使用Django自带的unit test的框架,于是修改这一段


原文:

Displaying unit test results

What this isn’t doing it making some pretty graphs and charts. Let’s see about getting some of that enabled.

Pygments uses Nose tests for it’s unit tests. That’s pretty nice, because Nose includes a mechanism to output the format of the tests into Java-based JUnit format, and Hudson in turn knows how to make pretty pictures from that format. Since we installed the nose library earlier, we can take advantage of it. Probably the “right” way to do this would be to change the Makefile to invoke the tests that output XML for the unit tests. For right now, we’ll just shim it into place with new build steps.

  • Change the content of the Execute shell build step and replace it with
    python tests/run.py --with-xunit
  • save the configuration and invoke “Build Now”
  • now look in the workspace in you should find a new file called “nosetests.xml” in the tests subdirectory.

Let’s get that graphed…

  • Go to the job configuration and enable “Publish JUnit test result report”. It will have a text field so that you can tell it where to find the results. It uses an Ant format for finding filenames in an existing directory structure.
  • In this case use **/tests/nosetests.xml
  • Save the config
  • invoke Build Now

现在我的做法:

使用unittest-xml-reporting,官网:https://github.com/danielfm/unittest-xml-reporting#readme

具体做法:

1)shell输入安装unittest-xml-reporting:

pip install unittest-xml-reporting

2)在Django项目的Settings.py输入:

TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
TEST_OUTPUT_VERBOSE = True
TEST_OUTPUT_DESCRIPTIONS = True
TEST_OUTPUT_DIR = 'unitTestResults'

3)回到shell,执行:
python manage.py test

4)执行完后会发现多出一个名为"unitTestResults”的文件夹,点进去看一下,发现里头有很多xml的文件生成

5)进入hudson的项目管理“configure”

http://Your IP Addr:8080/job/Your Project/configure

6)钩上“Publish Junit test result report”

7)地址填上“*/unitTestResults/*.xml”

8)保存

9)做个新Build,点 Build Now

10)Build完后会发现多出一个“Latest Test Results”的链接。点进去可以查看详细信息

11)同时会发现右边多出一个名为“Test Result Trend”的图

后面的就和原文一样了

Now you’ll see a new element in the web user interface called “Latest Test Result” which you can dig into. If you invoke “Build Now” again, it will start graphing the results of the tests and making that trend available in the project view. Right now this graph is going to be really darned boring, because there aren’t any changes between builds. Once more code starts rolling in, you’ll see changes with the number of tests being invoked. You can also click on that link and see the tests that were invoked. For python folks, remember that we’re shimming Python unit tests into a JUnit conceptual framework, so there are going to be some “leaky abstractions here”. In particular, test names, classes, and such may not alway match up with expectations. I have more details on how to enable XML output for a Django based test runner that I’ll post in another write up… uh, later.

hudson12

按照原文的做法,我也顺利的生成了Code Coverage和Pylint

这里要感谢原作者Joe Heck


附上原文的链接:

http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci-server-with-hudson/



Hudson之——Hudson的使用(使用 Hudson 来自动化编译、分析、打包、发布、部署项目)

添加项目 edu-common-parent为所有项目的父级项目,没有任务Java代码,如果项目中有Java代码,则与上述配置稍微有点区别,具体看下面的步骤。...
  • l1028386804
  • l1028386804
  • 2017年05月02日 01:04
  • 1268

图像滤镜艺术---Hudson滤镜(Instagram)

今天给大家实现的是Instagram中的Hudson滤镜,为什么介绍Instagram滤镜,原因很简单,Instagram...
  • Trent1985
  • Trent1985
  • 2014年11月19日 20:18
  • 1895

Hudson任务配置说明

Discard Old Builds:hudson默认保留过去的构建,勾选此选项,则可以设置构建记录的有效期;(帮助:这里控制着您想要在hudson所在的磁盘把构建记录存储的有效期;Hudson为此提...
  • catoop
  • catoop
  • 2015年08月05日 20:14
  • 1771

采用hudson部署javaWeb项目

经过几个星期的开发,终于项目接近尾声了,完成了服务端的代码了。 接下来的就是要让做客户端的哥子们一起来协同开发了,那么就得要把项目服务端部署起来。 之前部署都是直接将项目手动打成war包然后放到tom...
  • puhaiyang
  • puhaiyang
  • 2016年03月01日 12:58
  • 1668

持续集成方案,Hudson还是Jenkins?

IT业非常喜欢好的”圣战”。最近的一次发生Hudson和Jenkins之间。最近Oracle宣布有将Hudson捐献给Eclipse基金会,引发了一些关于这是否可以避免的Hudson和Jenkins之...
  • Shb_derek
  • Shb_derek
  • 2013年09月27日 10:27
  • 2865

hudson&jenkins搭建和使用

1.jenkins服务的搭建安装 有两种方式,如下: 方式一:用tomcat容器加载jenkins (1)下载jdk tar包并解压(不需要安装),并配置JAVA_HOME,PATH,CLASSPAT...
  • wangjianno2
  • wangjianno2
  • 2016年10月07日 21:38
  • 1273

hudson安装以及使用

hudson安装以及使用
  • u011375296
  • u011375296
  • 2016年12月19日 21:09
  • 950

hudson maven svn 搭建+自动部署

hudson+maven+svn搭建环境,并自动化部署
  • xiao__miao
  • xiao__miao
  • 2017年05月23日 15:33
  • 465

hudson--环境变量

在执行构建时,我们可以为每个JOB指定一些环境变量,方法如下: 在job的设置中,勾选“This build is parameterized” 点击“Add Parameter”,选择我...
  • zjd934784273
  • zjd934784273
  • 2015年08月11日 16:03
  • 369

12 Maven-使用Hudson进行持续集成及系统配置

12.1 持续集成的作用、过程和优势  简单的说,持续集成就是快速且高频率地自动构件项目的所有源码,并为项目成员提供丰富的反馈信息。 --快速:集成的速度要尽可能的快,开发人员不希望自己的代码提交半天...
  • u011077966
  • u011077966
  • 2016年05月05日 17:04
  • 8566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python-Django 使用 Hudson做CI服务器实践记
举报原因:
原因补充:

(最多只允许输入30个字)