Dovetail

Dovetail is a light-weight, multi-platform build tool for Python with Continuous Integration servers like Jenkins in mind.

Documentation

Dovetail is a development tool that makes running builds, tests and code coverage very easy. It's also great for running any command-line tools you need on your project, including documentation generators.

Building an application is not just running:

> python setup.py sdist

What about:

  • Building binary distributions for several target platforms
  • Building the user documentation and the API docs?
  • Running your unit tests, sometimes using several test frameworks?
  • Installing your application in a clean virtual environment and running user tests?
  • Running code quality tools like Coverage and Pylint?
  • Tagging your code in your DVCS?
  • Uploading the artifacts to a repository? That’s probably at least an Egg, a source distribution, documentation and your web site

How can you guarantee everyone, especially the new team members, are building in the same way?

Many teams solve this by writing scripts, but that raises more questions:

  • Do you have a lot of scripts lying around, each doing their own thing, and little shared code?
  • Do you have operating system specific scripts that do the same thing, but on different operating systems?
  • Are your scripts reliable and maintainable?

If you need to improve in these areas, Dovetail can help. Dovetail:

  • Is pure Python, so the build runs everywhere and is maintainable
  • Provides a simple API to externalize many common build requirements
  • There are no new configuration file formats or 4GLs of abstruse XML or other syntaxes
  • Makes it simple to query the build environment and adjust the build appropriately
  • Audits all the build steps and decisions
  • Properly catches build errors and displays the details of what went wrong
  • Makes it terribly easy to automate the build in a tool like Jenkins.

A nice unexpected benefit for the maintainer was that it has become easier to build in my IDE; I also get precisely the same build from the command line.

Dovetail does not replace Setuptools or distutils - these are the perfect tools for the specific build step of creating a distributable package.