Hello,
The DonationInterface as its own custom job. It is developed against the master branch but is deployed using the "deployment" branch on a FORK of MediaWiki 1.35 done under the fundraising/REL1_35 branch. To support that unique workflow, Quibble (the MediaWiki test runner I wrote to "simplify" CI) is given a branch override to have it checkout REL1_35 by default instead of master and to use fundraising/REL1_35 for the project having it. The job definition is at https://gerrit.wikimedia.org/r/plugins/gitiles/integration/config/+/refs/heads/master/jjb/wm-fundraising.yaml#93 which when expanded would look something such as:
quibble --branch REL1_35 Thus if one sends a change to:
- mediawiki/core fundraising/REL1_35 we will checkout
DonationInterface master branch but cldr at REL1_35
- DonationInterface master, we checkout mediawiki/core fundraising/REL1_35 but cldr at REL1_35
It is a bit complicated but luckily the jobs only need to be altered when a new LTS is out, and usually it only implies bumping the version of the REL branch and ensuring the fundraising/REL* branch has been created on the repositories.
Antoine "hashar" Musso
The "DonationInterface" has some "special handling" in the CI config: https://github.com/wikimedia/integration-config/blob/d2ef596ea8f6972222c0920270939c1bf967e0be/zuul/layout.yaml#L4464-L4480
They apparently use some dedicated Quibble test runner: https://github.com/wikimedia/integration-config/blob/d2ef596ea8f6972222c0920270939c1bf967e0be/jjb/wm-fundraising.yaml#L63-L76
I don't think this pattern can easily be re-used.
Von: Ostrzyciel <ostrzycielnozyczek@gmail.com>
Gesendet: Montag, 12. September 2022 16:42
An: wikitech-l@lists.wikimedia.org <wikitech-l@lists.wikimedia.org>
Betreff: [Wikitech-l] Re: How to specify version of MW that Jenkins should run?Hi all,
I've been looking into a similar thing for a different extension, where I wanted it to be compatible with MW 1.37+ (see task). Basically, I want the tests to run both on REL1_37 and master to make sure that whatever I merge is compatible with 1.37. The cherry-picking approach is not a valid solution, as it's tedious, error-prone, and I can never be sure that the patch works with both branches.
I know of one extension that seemingly has something like this: DonationInterface. For example, this master patch had its tests run against REL1_35.
Can something like this be replicated in other extensions? I think it's a vital feature for extension developers, because compatibility with only master is next to useless. To be honest, it boggles my mind that this hasn't become common practice long ago.
--The Slightly Mind-Boggled Ostrzyciel
On 12/09/2022 16:14, Robert Vogel via Wikitech-l wrote:
The continous integration testing currently uses the same branch fot the "dependecies" as it tests. So if you create a change set on branch `master`, it will use `master` for all the other repos (like mw core, extensions, skins) it clones to build up the environment. I am not aware of any way to influence this on a per repo level.
The only way I am currently aware of is to commit against a branch called `REL1_35` of your extension and then cherry-pick the changes up to `master`, once the tests have passed. This will make the CI tests use the `REL1_35` branch of each dependency (including mw core).
--Robert