Track T174431: Upgrade mw* servers to Debian Stretch (using HHVM) and T176370: Migrate to PHP 7 in WMF production in MediaWiki-Vagrant.
The process should be similar to the Trusty->Jessie migration (T136429). Major changes in this migration include upgrading from Puppet 3.x to 4.x and PHP 5.x to PHP 7.x.
Major changes
- Debian Stretch (Debian 9) base image
- Default PHP runtime is Zend PHP 7.0 (HHVM available via role)
- Database is MariaDB 10.1
- Puppet 4
Testing the Stretch base image and Puppet profiles
Its recommended to test with a fresh MediaWiki-Vagrant checkout so if things go badly you can easily switch back to your original install and keep working.
$ git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/vagrant mwv-stretch $ cd mwv-stretch $ git checkout stretch-migration $ ./setup.sh $ vagrant up
You can run vagrant roles list -e -1 to get a nice list of the roles you have enabled on your normal Trusty VM install to copy over to your Stretch testing VM. This one-liner liner might even do it for you:
$ cd mwv-stretch $ vagrant roles enable $(cd ../vagrant; vagrant roles list -e -1) $ vagrant provision
Role testing
Pure PHP roles (most extensions) should be fine, but it doesn't hurt to test them. The main things which need testing are roles which install additional system packages (e.g. elasticsearch), configure system packages (e.g. https), or install custom services (e.g. parsoid, restbase).
Provisioning: OK ✅, warnings ⚠️, errors 💣. Source: stretch, jessie.
Status | Role | Stretch | Jessie |
---|---|---|---|
abusefilter | ✅ | ✅ | |
accountinfo | ✅ | ✅ | |
advancedsearch | ✅ | ✅ | |
analytics | 💣 | 💣 | |
antispam | ✅ | ✅ | |
antispoof | ✅ | ✅ | |
apex | ✅ | ✅ | |
apparmor | 💣 | 💣 | |
articlecreationworkflow | ✅ | ✅ | |
OK | articleplaceholder | 💣 | 💣 |
babel | ✅ | ✅ | |
betafeatures | ✅ | ✅ | |
bouncehandler | ✅ | ✅ | |
buggy | ✅ | ✅ | |
campaigns | ✅ | ✅ | |
cassandra | 💣 | ✅ | |
categorytree | ✅ | ✅ | |
OK | centralauth | 💣 | ✅ |
centralnotice | ✅ | ✅ | |
checkuser | ✅ | ✅ | |
cirrussearch | 💣 | 💣 T183306 | |
cite | ✅ | ✅ | |
citoid | 💣 | 💣 | |
cldr | ✅ | ✅ | |
codeeditor | ✅ | ✅ | |
codemirror | 💣 | ✅ | |
cologneblue | ✅ | ✅ | |
commons | 💣 | 💣 | |
commons_datasets | 💣 | 💣 | |
commonsmetadata | ✅ | ✅ | |
confirmedit | ✅ | ✅ | |
contactpage | ✅ | ✅ | |
contenttranslation | 💣 | 💣 | |
disableaccount | ✅ | ✅ | |
disambiguator | ✅ | ✅ | |
doublewiki | ✅ | ✅ | |
easytimeline | ✅ | ✅ | |
echo | 💣 | ✅ | |
education | 💣 | ✅ | |
OK | elk | 💣 | ✅ T183071 |
emailauth | ✅ | ✅ | |
embedvideo | ✅ | ✅ | |
eventbus | 💣 | 💣 | |
OK | eventlogging | ✅ | ✅ T183380 |
externalstore | ✅ | ✅ | |
featuredfeeds | ✅ | ✅ | |
fileannotations | ✅ | ✅ | |
fileimporter | ✅ | ✅ | |
flaggedrevs | ✅ | ✅ | |
flow | 💣 | 💣 | |
fss | 💣 | 💣 | |
fundraising | 💣 | 💣 | |
gadgets | ✅ | ✅ | |
gadgets2 | ✅ | ✅ | |
geodata | ✅ | ✅ | |
geodata_elastic | 💣 | 💣 T183306 | |
geshi | ✅ | ✅ | |
gettingstarted | 💣 | 💣 | |
globalblocking | 💣 | ✅ | |
globalcssjs | 💣 | ✅ | |
globalpreferences | 💣 | ✅ | |
globalusage | ✅ | ✅ | |
globaluserpage | ✅ | ✅ | |
gpgmail | ✅ | ✅ | |
graph | ✅ | ✅ | |
graphoid | ⚠️ | 💣 | |
greystuff | ✅ | ✅ | |
guidedtour | ✅ | ✅ | |
gwtoolset | 💣 | ✅ | |
hadoop | 💣 | 💣 | |
headertabs | ✅ | ✅ | |
OK | hhvm | ✅ | ✅ |
hive | 💣 | 💣 | |
horizon | 💣 | 💣 | |
OK | https | ⚠️ | ✅ T183304, T183302 |
hue | 💣 | 💣 | |
iabot | ✅ | ✅ | |
iegreview | 💣 | 💣 | |
imagemetrics | ✅ | ✅ | |
inputbox | ✅ | ✅ | |
interwiki | ✅ | ✅ | |
invitesignup | ✅ | ✅ | |
jsduck | ✅ | ✅ | |
jsonconfig | ✅ | ✅ | |
kafka | 💣 | ✅ | |
kartographer | ✅ | ✅ | |
kartographerwv | ✅ | ✅ | |
keystone | 💣 | 💣 | |
l10nupdate | ✅ | ✅ | |
labeledsectiontransclusion | ✅ | ✅ | |
langwikis | ✅ | ✅ | |
ldapauth | ✅ | ✅ | |
liquidthreads | 💣 | ✅ | |
lockdown | ✅ | ✅ | |
loginnotify | 💣 | 💣 | |
maps | ✅ | ✅ | |
massaction | ✅ | ✅ | |
massmessage | 💣 | ✅ | |
math | 💣 | ✅ | |
mathoid | ⚠️ | 💣 | |
mathsearch | 💣 | ✅ | |
OK | mediawiki (default) | ✅ | ✅ |
memcached | ✅ | ✅ | |
minerva | ✅ | ✅ | |
mleb | ✅ | ✅ | |
mobileapp | ✅ | ✅ | |
mobilecontentservice | 💣 | ✅ | |
OK | mobilefrontend | ✅ | 💣 |
modern | ✅ | ✅ | |
molhandler | ✅ | ✅ | |
monobook | ✅ | ✅ | |
OK | multimedia | ✅ | ✅ |
OK | multimediaviewer | ✅ | ✅ |
mysql_strict | ✅ | ✅ | |
OK | navigationtiming | ✅ | ✅ |
newsletter | ✅ | ✅ | |
newusermessage | ✅ | ✅ | |
notebook | ✅ | 💣 | |
nuke | ✅ | ✅ | |
oathauth | ✅ | ✅ | |
oauth | ✅ | ✅ | |
oauthauthentication | ✅ | ✅ | |
offline | 💣 | ✅ | |
oozie | 💣 | 💣 | |
openbadges | ✅ | ✅ | |
ores | ✅ | ✅ | |
ores_service | ✅ | ✅ | |
pageassessments | ✅ | ✅ | |
pagedtiffhandler | ✅ | ⚠️ | |
pageimages | ✅ | ✅ | |
pagetriage | ✅ | ✅ | |
pageviewinfo | ✅ | ✅ | |
parserfunctions | ✅ | ✅ | |
parsoid | ⚠️ | 💣 | |
payments | 💣 | 💣 | |
OK | pdfhandler | ✅ | ✅ |
OK | performanceinspector | ✅ | ✅ |
phabricator | 💣 | ✅ | |
phptags | ✅ | ✅ | |
phragile | 💣 | 💣 | |
pipeescape | ✅ | ✅ | |
poem | ✅ | ✅ | |
poolcounter | 💣 | ✅ T183384 | |
OK | popups | ✅ | ✅ |
private | ✅ | ✅ | |
proofreadpage | ✅ | ✅ | |
psr3 | ✅ | ✅ | |
questycaptcha | 💣 | 💣 | |
quicksurveys | ✅ | ✅ | |
quips | 💣 | ✅ | |
quiz | ✅ | ✅ | |
raita | 💣 | 💣 | |
readinglists | ✅ | ✅ | |
OK | relatedarticles | ✅ | ✅ |
renameuser | ✅ | ✅ | |
restbase | 💣 | ✅ | |
revisionslider | ✅ | ✅ | |
sal | 💣 | ✅ | |
sandboxlink | ✅ | ✅ | |
scholarships | ✅ | ✅ | |
score | ✅ | ✅ | |
OK | scribunto | 💣 | ✅ T183888 |
securepoll | ✅ | ✅ | |
semanticextraspecialproperties | ✅ | ✅ | |
semanticmediawiki | ✅ | ✅ | |
semanticresultformats | ✅ | ✅ | |
semantictitle | ✅ | ✅ | |
sentry | 💣 | ✅ | |
shorturl | ✅ | ✅ | |
simple_miser | 💣 | ⚠️ | |
simple_performant | 💣 | ✅ | |
sitematrix | ⚠️ | 💣 | |
spark | 💣 | 💣 | |
OK | statsd | ✅ | ✅T183374 |
striker | 💣 | 💣 | |
OK | svg | ✅ | ✅ |
OK | swift | ✅ | ✅ T183354 |
syntaxhighlight | ✅ | ✅ | |
templatedata | ✅ | ✅ | |
templatesandbox | ✅ | ✅ | |
templatestyles | ✅ | ✅ | |
testwiki | ✅ | ✅ | |
textextracts | ✅ | ✅ | |
OK | three_d | ✅ | ✅ T183446 |
throttleoverride | ✅ | ✅ | |
OK | thumb_on_404 | ✅ | ✅ |
thumbor | 💣 | ✅ T183462 | |
tidy | ✅ | ✅ | |
OK | timedmediahandler | ✅ | ✅ |
timeless | ✅ | ✅ | |
titleblacklist | ✅ | ✅ | |
torblock | ✅ | ✅ | |
translate | ✅ | ✅ | |
uls | ✅ | ✅ | |
uploadslink | ✅ | ✅ | |
OK | uploadwizard | ✅ | ⚠️ |
urlgetparameters | ✅ | ✅ | |
urlshortener | ✅ | ✅ | |
usermerge | ✅ | ✅ | |
variables | ✅ | ✅ | |
OK | varnish | ⚠️ | ✅ |
OK | vipsscaler | ✅ | ✅ |
visualeditor | 💣 | ✅ | |
warnings_as_errors | ✅ | ✅ | |
whoops | ✅ | ✅ | |
widgets | ✅ | ✅ | |
wikibase_repo | 💣 | ✅ | |
OK | wikidata | ✅ | ✅ T183307 |
wikidatapagebanner | ✅ | ✅ | |
wikidiff2 | 💣 | ✅ | |
wikieditor | ✅ | ✅ | |
wikihiero | ✅ | ✅ | |
wikilabels | ✅ | ✅ | |
wikilove | ✅ | ✅ | |
wikimediaevents | ✅ | ✅ | |
wikimediaflow | 💣 | 💣 | |
wikimediaincubator | ✅ | ✅ | |
wikimediamaintenance | ⚠️ | ✅ | |
wikimediamessages | ✅ | ✅ | |
wikimediaproduction | 💣 | 💣 | |
wikimetrics | 💣 | 💣 | |
wikipediaextracts | ✅ | ✅ | |
wikispeech | ✅ | ✅ | |
wikitech | 💣 | 💣 | |
xanalytics | ✅ | ✅ | |
xhprofgui | ✅ | ✅ | |
youtube | ✅ | ✅ | |
zero | 💣 | ✅ T181915 (miss role::zend) | |
Reporting issues
Please create a subtask of this tracking task. It will be difficult to keep track of bugs reported as individual comments here.