Currently we’re using a farily tried and true method:
1. The site is generated via XSLT from XML sources in /avalon/central/site 2. The generated HTML can then be copied to /avalon/site 3. A cron job runs every four hours and updates the live site with the contents of /avalon/site via a simple ‘svn up’ command
However, there are some pros and cons to this approach.
Cons: 1. We’re storing the generated HTML in SVN. 2. There can be a discrepancy between the XML and HTML documents in SVN. 3. Site updates are done on a “dumb” schedule: normal cron, not triggered by some sort of change or release mechanism 4. Roll-backs and fixes not trivial or immediate
Pros: 1. Requires only one cron job and a relatively light weight update process (svn update is easy on the CPU) 2. Generation process agnostic: it doesn’t matter if you use Maven, Forrest, Docbook, or straight HTML authoring. The current mechanism expects ready-to-go HTML not needs-to-be-processed XML. 3. Changes to XML source are not published until the generated HTML is copied over and committed (ie- release control)
An ideal system would do the following:
1. Generate the site from XML automatically
2. Allow for scheduled and on-demand releases
3. Allow for roll-backs
4. Allow for intelligent updates: ie- don't need to copy over everything for a small change; don't unnecessarily delete old content;...
5. Not require any unix shell access
6. Scale for all the ASF projects (and their various generation schemes)
I’m not sure if we’re going to get there, but if anyone has any ideas or suggestions, we’d love to hear them.
Commentary