User:DAlangi (WMF)/Sandbox/MediaWiki-vendor-package-upgrade How-to

If you're making an attempt to release/upgrade a new version of a MediaWiki composer packagist package/library, follow the steps below.

NOTE: Feel free to improve the steps below if you see any loop holes.

Steps

 * 1) Ensure that you have the correct composer version (currently: 2.5.1 [1 ])
 * 2) Pick a library or package that you want to upgrade on our infrastructure. Example could be.
 * 3) Clone the   repository locally and update its   or   file with the format already used in the file. The heading section is usually the version that needs to be released e.g. 4.0.0
 * 4) Once you've updated the changelog in step 3 above, make a patch to the   repository on Gerrit [2].
 * 5) Once the patch is merged, git tag a new release and push this tag to Gerrit (which will also reflect on Github). Command for doing this is something like:   where the   is for signing the release and   is for specifying a release message [3 ].
 * 6) Push the new release tag using:
 * 7) As an extra step, ensure all other libraries or packages that depends on the   package are also updated with the correct tag by making patches to these libraries (updating the composer file with the new release[4]).
 * 8) Once all the patches above have been merged, make a patch to MediaWiki-Vendor repository, updating it to the latest release of the package (utfnormal).
 * 9) DON'T FORGET to run   to pick up the changes in the packages that were merged in the patches above. You can also use the docker command in the mediawiki vendor directly to do the update for you if you're unsure about your local composer version.
 * 10) Make a corresponding patch to the MediaWiki-core repository which depends on the patch on Step (5) above.
 * 11) Both patches of step 5 and 6 will be merged at the same time, updating MediaWiki core to the latest upgrade.
 * 12) Congratulations 🎉, you're made a new package release. Now watch Wikipedia and the world burn 🔥.

NOTE: Make sure you use the appropriate  commit footer if a patch depends on another in the order of committing.