Currently debian/changelog for Toolforge packages often has unstable or trusty as target.
This has two problems:
- The CI tests only run against that target, i. e. often Debian Jessie where the package will be deployed on Precise and Trusty and never on Jessie.
- It is impossible to differentiate in-source-package for example like I tried to in https://gerrit.wikimedia.org/r/#/c/268563/6/debian/control because the resulting binary packages for Precise and Trusty have the same filenames, but different contents. This makes it impossible to deploy them for example with aptly and other tools that expect files with identical names to be identical.
I had asked last year in debian-mentors and the recommended solution there was to have separate Git branches per target, develop on the most recent one and treat other targets as backports. I. e., for example tools-webservice's master (or ubuntu/trusty) would be intended for Trusty and the Precise backport at ubuntu/precise (cf. http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.import.html#GBP.BRANCH.NAMING, http://dep.debian.net/deps/dep14/). Work would happen on master (and submitted to Gerrit), then git checkout ubuntu/precise && git merge master && dch --bpo and submitted to Gerrit for the Precise branch.
Precise will be gone in two months, but the recommendations make sense universally as the problem occurs in any scenario (update from Trusty to Jessie, Jessie to …, etc.) and they bring us closer to what Debian does.
This requires checking that:
- Gerrit treats those branches the same way as master (inter alia permissions),
- Jenkins tests are run for all branches, and
- built binary packages can be deployed with aptly.
I propose to start with this on labs/toollabs as this is where I hit the problem first.