The automatic build process for the www.python.org site on dinsdale works like this.

Post-commit hook

An SVN post-commit hook adds a "buildqueued" file to the /data/website-build/build/status directory, containing the revision number; that's it. A file called "pepqueued" is added for PEP checkins, which are in a different repository.

This directory is accessible through the web at http://www.python.org/status/.

The post-commit hook runs /data/repos/www/hooks/post-commit -> update-web-wrapper -> update-web.py as user amk.

Automatic build

A cron job runs every 5 minutes (build/scripts/post-commit-svnup-binary, a set-uid binary), under the amk account. It runs build/scripts/post-commit-svnup.py which checks for "buildqueued" & "pepqueued" files. If found, it rebuilds the site, calling in turn build/scripts/server-build.py. (The name post-commit-svnup-* is misleading; they're not called by post-commit hook any more, but once were.)

The script performs the following steps:

  1. "svn up" in the build/ directory

  2. build the new .html files in build/out

  3. copy the new files to /data/ftp.python.org/pub/www.python.org

The site-updating cron job is run as user tparkin, and its output is appended to build/status/postcommitlog.txt. If that log file doesn't exist, a new one is created, but only writable by tparkin.

Admin/SiteBuild (last edited 2008-11-15 14:01:26 by localhost)

Unable to edit the page? See the FrontPage for instructions.