Internal releasesΒΆ

Tags: python, plone, thehealthagency, buildout, zestreleaser

Tomorrow night I will go to the Dutch python usergroup meeting in Arnhem which'll have a session on deploying your software. They also asked me for some input.

To deploy something, you first have got to properly release the items that make up the deployment. So python packages. There are three basic options for getting your released software (assumption: python packages) into your deployment (assumption: buildout or virtualenv or so):

  • Release them on pypi :-) Great option, but logically not suitable to internal-only tools and customer-specific work. Try releasing as much as possible here.
  • Custom pypi server. Plone's latest version of the PloneSoftwareCenter or Rocky Burt's ClueReleaseManager . Good option. I did however run into some problems regarding authentication when I wanted to lock it down with a password. And pypi's bare-bones xmlrpc api didn't work when I wanted to try replication features. With pre-2.6 pythons, you need an extra iw.dist package for uploading to a custom pypi (which works like a charm).
  • Tag checkouts. Of course you make tags when releasing. By hand or with zest.releaser (see recent post) or with collective.dist/collective.releaser (rightfully mentioned in a comment on that post).

    svn:externals in deployment configurations are a possibility, but don't seem that handy to me. The last thing I did at zest was to use infrae.subversion to do tag checkouts from within the buildout config (using zest.stabilizer to easily grab the right tags).

    At the health agency, where I just started working, we use a hand-made html page with ``svn+ssh://...../tag/1.0#egg=productname-1.0" urls and point to that page in buildout's find-links. Then buildout will take care of the rest for you. What I worked on the last days is a tool that trawls through our svn repository, finds all the tag directories and creates the html page automatically. I'll probably clean it up and make it releasable some day. Released on pypi, of course :-) It smells like an easy and low-hassle way to deal with the problem.

    One small thing that I didn't consciously know: buildout first looks in the find-links and only checks the index if it doesn't find anything in the find-links.

(Old imported comments)
"Just serve em with Apache" by on 2009-02-28 20:42:48
We just created an Apache virtual server ( with customer-specific subdirectories (password-protected), and Apache's automatic listing generation takes care of the rest.

This means we just need to copy our releases to a directory on the server (scp does the trick) and include the URL in the buildout find-links option.

Have a look at to see what it looks like. logo

About me

My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):