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/hea... 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/d2ef596ea8f6972222c0920...
They apparently use some dedicated Quibble test runner: https://github.com/wikimedia/integration-config/blob/d2ef596ea8f6972222c0920...
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 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