Continuious Integration platform for Mercurial

Pierre-Yves David pierre-yves.david at logilab.fr
Thu Mar 11 12:20:21 CST 2010


Hello,

Since the mercurial 1.5 sprint I'm working on improving Continuous Integration
[1] for Mercurial. All developpers are encouraged to run the test suites and
code quality checkers but it's no always feasible to test every cases,
different OS, different python versions, strange test dependencies, slow
coverage run, etc. Moreover it's generally useful to keep track of the results
of previous tests, especially for benchmarks.

[1]: http://en.wikipedia.org/wiki/Continuous_integration

As I've already talked about on IRC, I have been experimenting with a
continuous integration plateform at http://apycot.hg-scm.org/ . A production
setup now runs several variants of the tests-suite for all official repo and
checks code style and documentation. Notification by email or RSS is available.

I hope you'll find it useful, have fun!

Pierre-Yves David

FAQ:
====

Where are executions reports?
-----------------------------------------------

Execution reports are available at http://apycot.hg-scm.org/


How do I get notified?
-------------------------------

You can follow all status changes by RSS:

    http://apycot.hg-scm.org/TestExecution/?vid=changes_rss

or get email notifications by registering with a valid email address at:

http://apycot.hg-scm.org/register

Which repositories are tested?
----------------------------

The three main mercurial repositories are tested, on both default and stable branches:

    - Official repo : http://selenic.com/repo/hg

    - Crew repo: http://hg.intevation.org/mercurial/crew

    - Translation repo: http://bitbucket.org/mg/hg-i18n/


Which checkers are enabled?
---------------------------

There are six checkers enabled at the moment: python syntax, package
documentation, pylint, mercurial's check-code, mercurial run-tests.py and
mercurial's benchmark.

python syntax:
    Checks Python files syntax using the compile function coming
    with Python.

pkg doc:
    Check some standard package documentation :
        * presence of some required files (README, INSTALL, ChangeLog)
        * plain text files in the "doc" directory are ReST files
        * xml files in the "doc" directory are well formed
        * html files in the "doc" directory are correct

pylint:
    Run pylint on mercurial's code. The check fails if the score is inferior to
    a given threshold. But the execution log of this checker is full of
    interesting pylint messages even if the overall status is "success".


check-code:
    Use contrib/check-code.py to verify mercurial's code standard. The checker
    fails if any error is detected.

hgtest:
    Run the tests/run-tests.py tests suite. This checker is run for python2.4
    and 2.5 with C and pure-python version of hg.

performance:
    Run all commands of contrib/perf.py extension on a reference repository
    (mozilla-central here).

On what machine does the test run?
-----------------------------------

The apycotbot is currently running on a kvm running Debian lenny(stable).

I'm writing a FOO extension, can it be tested too?
-------------------------------------------------

Yes it can!  An interesting feature of apycot is the ability to define
dependencies between projects and automatically run tests when your
dependencies change.

Please contact me by email at pierre-yves.david at logilab.fr or via IRC
marmoute at freenode for configuration details.

Which tools are you using?
------------------------------------------

The whole thing is powered by Apycot, a continuous integration tools that I'be
been using in a professional context for several years. Apycot is now using
Cubicweb for configuration and results browsing.

Cubicweb empowers developers to efficiently build web applications by reusing
components (called cubes). Cubicweb follows well known object-oriented design
principles. See http://www.cubicweb.org/ for more details

Apycot looks great! How can I help?
-----------------------------------

Apycot is an open source project and we are happy to receive:

    - feedback from users,
    - improvement ideas,
    - bug reports,
    - bug fixes,
    - feature patches,
    - cookies or ponies (any color),
    - ...

The project is tracked at:
    http://www.logilab.org/project/apycot

The source is freely available under LGPL in mercurial repositories:
    http://www.logilab.org/src/apycotbot        apycot-bot source
    http://www.logilab.org/src/cubicweb-apycot  apycot-web-ui source


Thanks go to my employer, Logilab (http://logilab.fr) for providing servers and
work time for setting this up.

--
Pierre-Yves David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20100311/888433a0/attachment.pgp>


More information about the Mercurial-devel mailing list