Skip to end of metadata
Go to start of metadata

The ZooKeeper website is build using CMS and uses the ZooKeeper SVN repository as the content respository. Specifically, the site subdirectory under the root of the ZooKeeper SVN repository has the ZooKeeper website. We use textile markup for our pages and doc. Textile is a reasonably powerful markup language that also matches the markup used by confluence, our wiki system.

File layout

There are two key subdirectories in the site directory: content and templates. The content subdirectory has the textile files that will be transformed to HTML files by CMS. The templates subdirectory has the template files for the pages. The sidenav.textile template file contains the side navigation bar and is the template file most often changed, usually to point to new releases.

CMS will automatically build and stage a new website when changes are committed to the the site directory and its children. The staged site is made public using the CMS web interface.

The BookKeeper website and ZooKeeper doc is loaded pulled in using svn:externals, which is kind of like a symlink for SVN. These are added using svn propedit svn:externals . in the parent directory.

Unfortunately, changes to these linked directories are not detected by CMS, so to cause a new build to be generated for changes to linked directories we need to change something in the main directory. The file build_trigger exists for this reason. The file is not used for anything out. Just make an arbitrary change to the file and check it in to kick off a build which will pickup any changes from the linked directory.


To build the website on your local machine, you need to checkout the CMS build system from You can then run the build/ to build the website.

After the website is built and staged it will not be published until you use a CMS webpage to make it happen. The easiest way to do this is to install the CMS booklet, go to the zookeeper webpage, click on the booklet, and click publish.

  • No labels