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
                --project-branch mediawiki/extensions/DonationInterface=master
                --project-branch "mediawiki/core=fundraising/REL1_35"
                --project-branch "mediawiki/vendor=fundraising/REL1_35"
                mediawiki/vendor
                mediawiki/extensions/DonationInterface
                mediawiki/extensions/FundraisingEmailUnsubscribe
                mediawiki/extensions/ParserFunctions
                mediawiki/extensions/cldr

 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


Le 12/09/2022 à 16:54, Robert Vogel via Wikitech-l a écrit :
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 <ostrzycielnozyc...@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 <https://phabricator.wikimedia.org/T316479>). 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 <https://gerrit.wikimedia.org/r/c/mediawiki/extensions/DonationInterface/+/733965> 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
_______________________________________________
Wikitech-l mailing list -- wikitech-l@lists.wikimedia.org
To unsubscribe send an email to wikitech-l-le...@lists.wikimedia.org
https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/

Reply via email to