38 responses

  1. Holger
    November 6, 2009

    Excellent writeup! Thanks for sharing.

  2. David Hancock
    November 6, 2009

    Very near the beginning, you seem to say that Hudson will run without Tomcat, JBoss, etc. How is this actually done? I’ve never deployed or run a .war file before.

  3. David Hancock
    November 6, 2009

    Never mind, I’m an idiot. I didn’t read far enough to see you could run it like a .jar. Sorry.

  4. Lionel Barret
    November 10, 2009

    Excellent !

    By the way, is there any possibility to have some packaging steps ? (like py2exe, molebox, nsys ?)

    that would be awesome !

  5. Antti Rasinen
    November 12, 2009

    Sir, you have read my mind a week in advance. A very neat trick.

    Thank you very much for this guide. It is exactly what I have been looking for.

  6. Pavol Zibrita
    December 2, 2009
  7. Pavol Zibrita
    December 2, 2009

    Sorry, not codecoverage but clones (duplications, copy&paste) ! My mistake :-).

  8. Matthew
    January 23, 2010

    Excellent post! Although, I couldn’t get coverage working, but got this error instead:

    Pygments 1.2.2 test suite running (Python 2.6.4)…
    [workspace] $ /bin/sh -xe /tmp/hudson6037042077469918604.sh
    + coverage run tests/run.py –with-xunit
    You must specify at least one of -e, -x, -c, -r, or -a.

    Has something changed in coverage since this writeup?

    • Joe
      January 23, 2010

      I just updated coverage on my local hudson build system, and didn’t run into the issue that you shared. I updated it with:

      sudo pip install -U coverage

      Sorry I couldn’t be more help…

  9. Matthew
    January 24, 2010

    Resolved! I was using Coverage 2.85, not 3.2.

  10. Tyler
    February 14, 2010

    I’m comparing Buildbot to Hudson and found this guide (esp. the screenshots – larger versions?) very helpful.


  11. Arnab Sen Gupta
    June 8, 2010

    Is it possible to use Hudson only as a passive server,i.e, not using it for building purpose instead sending build results generated by some other tool in maybe XML format and using Hudson to only display the results??

    • Joe
      June 8, 2010

      Certainly. At it’s heart Hudson is an orchestration engine that just happens to have been tuned to build system needs. You can trigger actions in lots of different ways, including a simple existance of a file.

  12. Monty Taylor
    July 24, 2010

    Excellent. Thanks.

    Turns out it’s really easy to munge pep8 output into pylint format …

    pep8 –repeat swift | perl -ple ‘s/: ([WE]\d+)/: [$1]/’ > pep8.txt

    I ran that into the pylint violations plugin and it worked like a charm:



    • Joe
      July 24, 2010

      Nice to see the openstack CI system is using Hudson and python – hopefully my writeup helped to some degree.

  13. sorin
    September 14, 2010

    It looks that there is small bug in the article, the proper way of generating the xml file it is to run `coverage xml`. The other method doesn’t work. See http://bitbucket.org/kmike/django-coverage/issue/2/ability-to-create-xunit-xml-report

  14. Adam
    September 16, 2010

    I was looking for info on Hudson and saw a reference to a write up by Joe Heck, figured it would be the same Joe Heck I worked with at WDIG.

  15. Jorge Vargas
    November 4, 2010

    Excellent write up indeed. Thank you !

  16. thien
    November 24, 2010

    I got this error when build the project:

    $ hg clone –rev trunk http://dev.pocoo.org/hg/pygments-main /var/lib/hudson/jobs/pygments/workspace
    ERROR: Failed to clone http://dev.pocoo.org/hg/pygments-main
    java.io.IOException: Cannot run program “hg”: java.io.IOException: error=2, No such file or directory

    Do you know what’s wrong with it?

    • Joe
      November 24, 2010

      i would guess that you dont have mercurial (hg on the command line) installed on your local hudson machine. if it is installed, it isnt on a standard path that the hudson process can find/see.

  17. Kamal
    February 14, 2011

    Hi Joe,
    What an incredible posting, this has helped me tramendously. Any chance of you posting more on the same like “how to enable XML output for a Django based test runner”, as you mentioned. Or articles on Hudson Remote API. What i am trying to acheive is to progrmatically have rules which will Qualify a Build for DEV Consumption, or QA Use, etc

    • Joe
      March 8, 2011

      I’ll see what I can do – although I suspect if you track some of the things happening at PyCon US 2011 this coming weekend, you’ll get everything you’re looking for.

  18. Christopher
    August 2, 2011

    Excellent post, allowed me to successfully setup a CI server for my teams Python/Pyramid project.

    (hopefully not to late to the party)

    @Monty Taylor
    Awesome, thanks for sharing this, I prefer the checking of pep8 over pylint.
    Using your original regex seemed to disable displaying the hi-lighted files under the ‘pylint’ report. I changed it to this which seems to work (note the’\d+:’):
    pep8 --repeat | perl -ple 's/:\d+: ([WE]\d+)/: [$1]/' > pep8.txt

    This gets ride of the extra ‘column number’ from the pep8 report which would seem to confuse the pylint plugin.
    (This gives you a list of violations at the top, linked to an annotated display below it).

  19. Christopher
    August 2, 2011

    Oops, it should say
    directory_name after the repeat

  20. Valentin Bora
    August 21, 2011

    Awesome tutorial, clear instructions and they actually worked great from the first try even two years later.


    • Joe
      August 21, 2011

      You’re very welcome! Glad it’s been useful. Google keeps telling me it’s the most popular content on my blog – 15% of page views over the past month.

  21. Pedro Mendes
    April 9, 2012

    Hello Joe,

    Your post was (and is) very useful to me and I believe it should help many others developers here in Brazil. Can I translate it to Portuguese e post on my blog (with a reference to original post), like I did with Martin Fowler’s CI post (http://bit.ly/9b0qy) ?


Leave a Reply




Back to top
mobile desktop