Working with Launchpad Production Configs

This page describes how you edit the configurations that you find in Launchpad's config/ directory.

TODO: Link to documentation for canonical.config.

TODO: Link to documentation for config files.

Config branches

This page uses variables that are defined in ~/.rocketfuel-env.sh. You may want to run it before you start, but don't just execute it. If run that way it'll fork and define variables in the child process, and then the child process will exit without complaints—but taking all the variables with it. So instead:

. ~/.rocketfuel-env.sh

Only the current shell session will be affected.

Set up a repository

This is not a regular launchpad branch but once from a separate project, so you'll want to create your local branch outside the directory where you keep your regular Launchpad branches ($LP_SHARED_REPO).

I'd suggest setting up a new repository next to the one that holds your Launchpad branches:

cd "$LP_PROJECT_ROOT"

# Set up a place for lp-production-configs branches.
bzr init-repo lp-production-configs
cd lp-production-configs
bzr branch lp:~launchpad-pqm/lp-production-configs/trunk

Even if you don't create a repository, you'll have to add wherever you put your lp-production-configs branch to .bazaar/locations.conf to make things work:

[/home/me/canonical/lp-production-configs]
pqm_email = launchpad@pqm.canonical.com
submit_branch = bzr+ssh://bazaar.launchpad.net/~launchpad-pqm/lp-production-configs/trunk
public_branch = bzr+ssh://bazaar.launchpad.net/~me/lp-production-configs
public_branch:policy = appendpath
push_location = bzr+ssh://me@bazaar.launchpad.net/%7Eme/lp-production-configs
push_location:policy = appendpath

You now have a setup very smilar to the one for Launchpad branches: a repository with a local trunk branch in it.

Create a branch

Make sure you have a fresh checkout of lp-production-configs trunk. Then create your own branch to, for instance, fix bug 999999.

cd "$LP_PROJECT_ROOT/lp-production-configs"

cd trunk ; bzr pull ; cd ..

bzr branch trunk production-configs-bug-999999
cd production-configs-bug-999999

Now make your changes in production-configs-bug-999999, commit, and push. All just as you would with a Launchpad devel or db-devel branch.

Get a review

When you're done, propose your branch for merging into lp:~launchpad-pqm/lp-production-configs. This is the default target for the merge proposal. The branch needs to be reviewed by one of the LOSA's ("canonical-losas"); this is also the default choice of reviewer.

Pre-landing Q/A

If there is any risk that your change might break things, test it on staging after your review but before you land your branch. To do this, ask the LOSAs to cowboy-patch it onto staging.

Make sure that you left no subtle differences between the staging config and the production config that might break things! That's a spot our automated test suite can't reach.

Land

Once you've very very sure everything works as expected, land your branch:

bzr pqm-submit -m "[r=myreviewer][bug=999999] Configure oops logging for frobnicate."

And... wait.

Q/A

Even if you tested on staging before landing, test (again) on edge after your branch has rolled out there. This helps guard against those subtle differences between configs.

WorkingWithProductionConfigs (last edited 2010-05-04 11:19:09 by danilo)