Integration of autopkgtest with proposed-migration

Colin Watson cjwatson at ubuntu.com
Thu Jul 4 14:39:19 UTC 2013


Some of you have already noticed that the process which migrates uploads
from the proposed pocket to the release pocket once they're ready [1]
[2] is now also kicking off runs of autopkgtest [3].  I'd been holding
off announcing this for a while so that we could get things working a
little better, but it's really about time to explain what we're doing.

Once an upload is sufficiently ready in -proposed (that is, it has no
out-of-date binaries on amd64 and i386), proposed-migration will ask a
Jenkins instance to run autopkgtests for that package and for its
reverse-dependencies.  This allows package maintainers to check not only
that their package builds and passes tests in its build tree, but that
it works properly as installed from .debs, and that it continues to work
properly when the packages it depends on change.  Uploads will not be
allowed into the release pocket until all relevant tests have passed or
until any failures have been manually overridden by a member of the
release team.

Developers will be sent mail about autopkgtest failures in their
uploads.  You may have received some of these already.

Some frequently asked questions:

 * Why are you doing this?  It makes it harder for me to land my
   changes.

   The whole proposed-migration process is part of a balance between
   quality (only land changes that work) and velocity (make developers
   more productive by letting them get changes to users more quickly).
   Some of it, including this work, is loosely inspired by suggestions
   from Scott James Remnant [4].  I think there's widespread agreement
   that the introduction of proposed-migration has helped to make
   Ubuntu's development release very much more stable and useful.  There
   are several classes of problems that it could never have caught in
   its previous form, though, and by integrating autopkgtest I hope that
   we can address that without slowing things down too much.

   In the best case, an upload with associated autopkgtests will take an
   extra publisher cycle to reach the release pocket.  It may take
   longer if its tests take longer to run.  I think this is generally
   acceptable, but I also think velocity is very important [5], and I'm
   watching the process closely at the moment to try to minimise the
   extent to which it holds anyone up.

 * Why not only require tests to pass if they've passed before?

   The main part of proposed-migration works on a ratchet: the result of
   promoting a package must leave the number of uninstallable packages
   in the archive no worse than before.  For this work, though, I chose
   to take a more absolutist approach: tests must pass even if they
   previously failed.  This is mainly because there are few enough
   autopkgtests that I don't think it's an unreasonable request to fix
   them; at the time of writing we have 22 failing jobs out of 166 total
   [6].

 * But I really need to land this change now!

   Members of the ubuntu-release team can override either a failing test
   for all the uploads that caused it to be run ("force-badtest") or a
   single upload with some failing tests ("force-skiptest").  We hang
   out on the #ubuntu-release channel on freenode, so come and explain
   to us why it's more urgent to land the change than to fix the
   failure.

 * How do I tell what's going on with a test?

   The "excuses" page has links to the Jenkins logs for each running
   test.  Unfortunately jobs run on a private Jenkins instance and are
   only copied over to the public one after they complete, so if you
   want to find out what's going on with a job in progress then you need
   to ask a Canonical employee with QA lab VPN access [7] to look at the
   private instance for you.

 * Why do you run tests for reverse-dependencies?  Won't that take ages
   for core packages?

   Running tests for a package itself is somewhat useful, but doesn't
   gain all that much; most such tests could in principle be run as
   build-time tests, although there's some benefit in running them in a
   different environment, based on the installed version of the package
   rather than what's in the build tree, and with only their run-time
   dependencies.  The real benefit comes from cross-package testing.
   This means that you get to put assertions in your package that your
   dependencies work, and have that tested when those dependencies
   change in such a way that they only get to migrate to the release
   pocket once the whole assembly is sound.

   That said, we only currently run tests for direct
   reverse-dependencies, not indirect ones (e.g. ubiquity -> python3 ->
   python3.3), so there are some gaps in our coverage here.  We may
   change the details of this behaviour over time.

   It is possible that there are indeed packages for which this will
   take ages.  If this becomes an unreasonable problem, we can force the
   packages in question.  At the moment, we seem to have plenty of
   capacity for running tests.

 * How do I reproduce test failures?

   You can use the "adt-run" command in the autopkgtest package, which
   supports various back-ends (for instance, I usually use "adt-run
   foo.dsc --- adt-virt-schroot saucy-i386"), or you can use the more
   comprehensive tools in lp:auto-package-testing.  For details, see the
   Ubuntu Packaging Guide [8].

Many thanks to Jean-Baptiste Lallement for doing the lion's share of the
hard work for this.

[1] https://lists.ubuntu.com/archives/ubuntu-devel/2012-October/036043.html
[2] http://people.canonical.com/~ubuntu-archive/proposed-migration/
[3] http://dep.debian.net/deps/dep8/
[4] http://netsplit.com/2011/09/08/new-ubuntu-release-process/
[5] http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/ubuntu/2011-10-24-quality-in-12-04.html
[6] https://jenkins.qa.ubuntu.com/view/Saucy/view/AutoPkgTest/
[7] https://wiki.canonical.com/UbuntuEngineering/QA/VPN
[8] http://developer.ubuntu.com/packaging/html/auto-pkg-test.html

-- 
Colin Watson                                       [cjwatson at ubuntu.com]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 892 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/ubuntu-devel-announce/attachments/20130704/03973ce1/attachment.pgp>


More information about the ubuntu-devel-announce mailing list