Switching to Tarmac

John Arbash Meinel john at arbash-meinel.com
Wed Jun 12 05:59:00 UTC 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi everyone-

I think we're finally at the point where the juju-core test suite will
pass cleanly on Tarmac, and I'd like us to switch over to using it for
landing code.

Here are the changes I think will happen:

1) 'lp:juju-core' changes from lp:~juju/juju-core/trunk to
lp:~go-bot/juju-core-trunk

This prevents people from accidentally directly committing/pushing to
trunk.

It also means that if you only did 'go get launchpad.net/juju-core'
you'll want to
  cd src/launchpad.net/juju-core
  bzr pull --remember lp:juju-core

Which change the pull branch to bazaar.launchpad.net/+branch/juju-core
so you won't have to do that again in the future.


2) That means 'lbox submit' won't work anymore. Instead to submit a
branch which has been approved you can either:

  a) Go to the Launchpad merge proposal page, mark the whole proposal
     Approved. Make sure there is a "Commit Message" set (rather than
     just a description)

  b) Install Aaron Bentley's lp:rv-submit as a Bazaar plugin, and use
     'bzr rv-submit', which will check for 2 LGTMs in the comments and
     do the steps in (a) for you.[1]

3) The bot wakes up every minute to look for changes, and the test
suite takes <15 minutes to run. If the test suite fails, the bot puts
the results back on to the Launchpad merge proposal and sets the
status back to Needs Review. So if you haven't heard anything, there
may be a problem with the submission (biggest current problem is
Commit Message missing, which tends to just silently ignore the MP
until you set one.)

Note that if the bot is busy, it will only run 1 request at a time. So
if there is a queue, it make take longer than 15 minutes.

4) We will remove running the juju-core test suite as a prerequisite
for landing lp:goose changes. (We still don't have dependency
tracking, so landing code in a dependency can break landing code in
juju-core, but we still need some way to land a patch and land the
patch that fixes juju-core.)

5) Right now the 'test' in Tarmac is:
  go fmt ./... && go build ./... && go test ./...

Which means that it doesn't yet automatically update dependencies. I'm
looking to change it to something that builds a pristine GOPATH every
time (using a shared repository to avoid having to actually download
the code each time).

Along the way, I'm hoping we can get dependency tracking, so that it
doesn't build from TIP of everything each time.

6) When we get Continuous Integration (from a Jenkins instance), I'll
want to add a job that grabs TIP of everything so we know what it will
take to keep things on HEAD. (eg, we can be told that the last change
to goose/mgo/go.crypto will break juju-core, so we can prepare a patch
etc.)

7) The bot will be running go 1.0.3 on Precise for now, as I expect
that is the platform that we'll find the easiest to break
accidentally. (And is also likely to be the platform that most charms
will be running on.)

8) When we get things like GOMAXPROCS=2 and the test suite working
reliably, I will be happy to set that in the bot so that we can
ratchet up our baseline. Flaky tests (things that fail once in a
while) will be pretty ruthlessly disabled. I never want us to feel
like you should just resubmit without modifications to get code to land.

9) I will add people's SSH keys to go-bot's account, so that we have a
workaround when the bot is being rude/broken/etc.

John
=:->


[1] Note that rv-submit presently only checks Launchpad comments, so
for comments from people like Dave that don't get forwarded correctly
from Rietveld it may not see the right LGTM listings.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.13 (Cygwin)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlG4DiQACgkQJdeBCYSNAAMqcACfQ0ttpOSNUzi78czDMjykLedj
8AAAoIpM4xCAEowggmZaEXkZ4EgAid1h
=nVux
-----END PGP SIGNATURE-----



More information about the Juju-dev mailing list