Continuous integration/Quibble/nan

Quibble is a Python script for setting up a MediaWiki instance and running various tests against it.

It works by cloning MediaWiki core and several extensions, installing dependencies, creating the database, and running one or more test commands.

Iân-sin ua̍t-to̍k

 * Introducing Quibble, Antoine Musso (April 2018), phabricator.wikimedia.org.
 * https://doc.wikimedia.org/quibble/

Tshòng-kiàn hām pòo-sū sin-ê Quibble pán-pún
This is moderately fiddly and stressful, and should be done when you have a fair amount of time free and CI is relatively quiet; Fridays are commonly picked.

Creating the release
See RELEASE.rst in the repository.

Creating images
This covers the creation of Docker images using the Quibble git tag (example)


 * 1) In integration-config's   directory, manually edit the   for the primary Quibble image to specify the new version (as of 2022-02-02, this is for  ).  That is done in the pip3 install command line.
 * 2) Use docker-pkg to create the appropriate cascade of   updates, e.g.
 * 3) Build the images locally to ensure they still build:
 * 4) Check the locally-built images to ensure that quibble correctly updated:   and then   and see that the correct version number is shown.
 * 5) Create this update as a change, submit it to code review, and wait for it to be merged.
 * 6) Create and publish the new images on the CI production server:   (remember to   this action in IRC) – 🐌 this will take a while, perhaps an hour or more

Update Jenkins jobs
Switch CI jobs over to the new image (example)


 * 1) In integration-config's  directory, update the Jenkins job-builder YAML files to specify the new docker images:
 * 2) Verify all Quibble images have been updated:
 * 3) Verify that these jobs build correctly:
 * 4) Get a list of all jobs which will be updated by the change; there will be around 150 as of 2020-06-04.
 * 5) Push these updates as a commit to code review.
 * 6) Based on your knowledge of the changes in quibble, pick a likely simple, infrequent, fast-running job to manually change over, and push it:
 * 7) Manually trigger run a run of this job through the Jenkins Web interface, and carefully watch the output to ensure it works as it used to where it should, and in a different way where Quibble's changes should change things.
 * 8) If you spot an error, rollback the job to the definition in master immediately rather than debugging live; remember that other people's workflows depend on CI continuing to work.
 * 9) Repeat this with increasingly major/high-profile jobs until you are satisfied that you or someone else on IRC would have noticed if the jobs were broken.
 * 10) Update the rest of the jobs in your list.
 * 11) Merge the commit as deployed.
 * 12) You most probably want to verify that a  on   and   pass fully.
 * 13) Continue to monitor CI for a while, in case things blow up despite your hard work. If it does, revert everything.

Guā-pōo liân-kiat

 * Documentation