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/he…
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/d2ef596ea8f6972222c092…
They apparently use some dedicated Quibble test runner:
https://github.com/wikimedia/integration-config/blob/d2ef596ea8f6972222c092…
I don't think this pattern can easily be re-used.
------------------------------------------------------------------------
*Von:* Ostrzyciel <ostrzycielnozyczek(a)gmail.com>
*Gesendet:* Montag, 12. September 2022 16:42
*An:* wikitech-l(a)lists.wikimedia.org <wikitech-l(a)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