[ocaml-infra] Staging Build and Deployment of ocaml.org

David Sheets sheets at alum.mit.edu
Mon Mar 17 11:49:14 GMT 2014


Our present deployment workflow unnecessarily relies on a single build
environment running on the same (?) machine as the serving system.

ocaml.org is entirely static with a refresh on the order of minutes. I
propose we take advantage of this feature to move to a fully staged
build and deployment solution.

Specifically, I'd like to see:

1. Generated assets and build logs publicly accessible
2. Build environment specification (e.g. "this stock Ubuntu image").
3. History

I'd like to suggest the following design from back-to-front:

1. Travis CI builds ocaml.org on commit hook to source repository
2. Travis CI pushes successful builds to static asset repository
3. Server checks out static asset repository on commit hook

If we would like to stage development and production, the following may satisfy:

1. Travis CI builds ocaml.org on commit hook to source repository
2. Travis CI pushes successful builds to static assets
3. beta.ocaml.org checks out static asset repository on commit hook to
static assets
4. ocaml.org checks out static asset repository on special commit hook
to static assets

Where "special commit hook" is a commit by a non-Travis user which
contains as its commit message a human/machine-readable description of
the deployment. These commits can themselves be consumed to generate a
site change log which is exposed on the site.

This approach should help us achieve faster iteration on the
mechanical components of the site, ease build debugging, ease build
reproduction, and offer a pre-built image of the site's assets.

What do you think?

David


More information about the Infrastructure mailing list