Wonderful, thank you, this should be very useful.
-- Amir Elisha Aharoni · אָמִיר אֱלִישָׁע אַהֲרוֹנִי http://aharoni.wordpress.com “We're living in pieces, I want to live in peace.” – T. Moore
2015-11-19 15:19 GMT+02:00 Antoine Musso hashar+wmf@free.fr:
Hello,
We often have the case of a change to an extension depending on a pending patch to MediaWiki core. I have upgraded our CI scheduler - Zuul - a couple weeks ago and it now supports marking dependencies even in different repositories.
Why does it matter? To make sure the dependency is fulfilled one usually either:
- CR-2 the patch until dependent change is merged
- write a test that exercise the required patch in MediaWiki.
With the first solution (lack of test), once both are merged, nothing prevent one from cherry picking a patch without its dependent patch. For example for MediaWiki minor releases or Wikimedia deployment branches.
When a test covers the dependency, it will fail until the dependent one is merged which is rather annoying.
Zuul now recognizes the header 'Depends-On' in git messages, similar to 'Change-Id' and 'Bug'. 'Depends-On' takes as parameter a change-id and multiple ones can be added.
When a patch is proposed in Gerrit, Zuul looks for Gerrit changes matching the 'Depends-On' and verify whether any are still open. In such a case, it will craft references for the open patches so all the dependencies can be tested as if they got merged.
Real world example
The ContentTranslation extension is tested with the Wikidata one and was not passing the test. Wikidata created a patch and we did not want to merge it until we confirm the ContentTranslation one is passing properly.
The Wikidata patch is https://gerrit.wikimedia.org/r/#/c/252227/ Change-Id: I0312c23628d706deb507b5534b868480945b6163
On ContentTranslation we indicated the dependency: https://gerrit.wikimedia.org/r/#/c/252172/1..2//COMMIT_MSG
- Depends-On: I0312c23628d706deb507b5534b868480945b6163
Which is the Wikidata patch.
Zuul:
- received the patch for ContentTranslation
- looked up the change-id and found the Wikidata
- created git references in both repo to point to the proper patches
Jenkins:
- zuul-cloner cloned both repos and fetched the references created by
the Zuul service
- run tests
- SUCCESS
That confirmed us the Wikidata patch was actually fixing the issue for ContentTranslation. Hence we CR+2 both and all merged fine.
Please take a moment to read upstream documentation:
http://docs.openstack.org/infra/zuul/gating.html#cross-repository-dependenci...
Wikidata/ContentTranslation task: https://phabricator.wikimedia.org/T118263
-- Antoine "hashar" Musso
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l