[ocaml-infra] Staging Build and Deployment of ocaml.org
Anil Madhavapeddy
anil at recoil.org
Mon Mar 17 11:55:07 GMT 2014
On 17 Mar 2014, at 11:49, David Sheets <sheets at alum.mit.edu> wrote:
> 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
This seems like a fairly standard workflow for Travis, as long as the
run can always finish within a 50 minute time limit. I'd be in favour
of splitting the static HTML staging from the generation of the static
HTML for the reasons you list above.
> 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
The only potential issue with this are hardcoded references to http://ocaml.org
within the staged site, which would prevent a beta.ocaml.org site from
working correctly. If domain names are not hardcoded, then it should be
fine.
>
> 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?
Great idea. I'd very much like to minimise the amount of non-publically
triage-able code on the ocaml.org VMs, in order to lock them down more
and more as time goes on.
-anil
More information about the Infrastructure
mailing list