LAVA Deployment Improvements

Home / Linaro Blog / LAVA Deployment Improvements

Last month the LAVA team made a big update to the way their deployment tool works. The new method uses zc.buildout. The result is that we now have a deployment tool in place that works consistently and repeatably.

The deployment configuration to be used is now managed in the LAVA manifests project. This project has two main configurations:

  • buildout.cfg – This uses the latest versions of LAVA components in pypi while requiring the use of a fixed versioned list of dependencies for LAVA.
  • buildout-production.cfg – This extends buildout.cfg and versions the LAVA components themselves to what we have deployed in our production instance of LAVA.

Additionally, we put tags in the lava-manifests branch so users can see exactly what we deployed for each monthly cycle.

An Example

To install LAVA, you’d now run:

bzr branch lp:lava-deployment-tool
./lava-deployment-tool/lava-deployment-tool install testinstance

Later on when an update was made to the lava-manifest for your build configuration, you could upgrade with:

./lava-deployment-tool upgrade testinstance

Overrding Linaro’s Manifest

If you don’t want to use the manifest in lava-manifest or want to use your own branch you can do so with:

LAVA_MANIFEST_BRANCH=<bzr branch spec> ./lava-deployment-too install testinstance

You can also pick your config file from the branch with:

LAVA_BUILDOUT_CFG=buildout-foobar.cfg LAVA_MANIFEST_BRANCH=<bzr branch spec> ./lava-deployment-too install testinstance

Development Improvements

The new mechanism we’ve choosen also allows makes it a little nicer for doing local development. Under a LAVA instance you’ll now have a directory like:

 /srv/lava/instances/<instance>/code/current/local

You can pull in components you’d like to work against into that directory. For instance, you can work off the latest tip of the lava-dispatcher with:

cd /srv/lava/instances/<instance>/code/current/local
bzr branch lp:lava-dispatcher
cd .. # you are now in /srv/lava/instances/<instance>/code/current
./bin/buildout #this pulls in the updated component

NOTE: Directory names don’t matter under code/current/local. buildout finds out the package information by looking at its setup.py. So you could rename the above directory to “lava-dispatcher-devcopy” and re-reun the “buildout” command.

More Information

Take a look at the latest version of our deployment tool README for further options with deployments.

Recent Posts