In order to upgrade for all our MediaWiki clusters to Debian Buster, we need to upgrade the current Debian Stretch installation to use ICU 63. The reason is that Debian ships with version 63. This process requires all servers to be upgraded within a short period of time, and after that running the updateCollation.php script on all wikis with a non-standard collation.
Migration day will be Monday, November 16, 2020.
The transition plan will roughly be as follows:
- Rebuild related packages for stretch by linking them to libicu63 and add them to the component/icu63 repo
- php7.2-bcmath
- php7.2-bz2
- php7.2-cli
- php7.2-common
- php7.2-curl
- php7.2-dba
- php7.2-fpm
- php7.2-gd
- php7.2-gmp
- php7.2-intl
- php7.2-json
- php7.2-mbstring
- php7.2-mysql
- php7.2-opcache
- php7.2-phpdbg
- php7.2-readline
- php7.2-xml
- php-igbinary
- php-apcu-b
- php-memcached
- php-redis
- php-mailparse [x[ php-mongodb
- php-msgpack
- dh-php
- php-acpu
- php-imagick
- php-defaults
- php-excimer
- php-luasandbox
- php-geoip
- php-wmerrors
- tideways
- tideways-xhprof
- wikidiff2
- libxml
- Use a feature flag to enable component/icu63 in puppet
- Test packages on mwdebug servers
- Define a migration date - 16th Nov 2020
- Notify the communities (phabricator, wikitech-l, ?) -> T267145
- On Migration day:
- Upgrade to libicu63 everywhere
- app, api, parsoid, jobrunners
- snapshot hosts
- deploy hosts (can be done later)
- Run updateCollation.php on all wikis where it's needed (~10 days, this is the point of no return, **use screen/tmux)
- Upgrade to libicu63 everywhere
Notes:
For updating app, api, parsoid, jobrunners, we use this command. For updating snapshot* and deploy* we made sure to remove packages that are not installed there.
cumin mwdebug1001* 'depool; sleep 1; run-puppet-agent -e "upgrading ICU63" ; apt-get -q update; export DEBIAN_FRONTEND=noninteractive; apt-get install -y libicu63 libxml2 php7.2-bcmath php7.2-bz2 php7.2-cli php7.2-common php7.2-curl php7.2-dba php7.2-fpm php7.2-gd php7.2-gmp php7.2-intl php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml php-apcu php-cli php-common php-excimer php-geoip php-igbinary php-luasandbox php-memcached php-mongodb php-msgpack php-redis php-tideways-xhprof php-wmerrors ; systemctl restart php7.2-fpm ; pool'
(This task originally included the upgrade of MediaWiki servers to Buster, which is why there might be some comments related to that)