On Wed, Jan 20, 2016 at 7:56 AM, Ray Paseur <ray.paseur(a)armedia.com> wrote:
Colleagues: I'm looking for some "best
practices" advice here.
I have three Wikis, Dev, Test, and Prod. Dev is the sandbox. Test is for
user-acceptance. Prod is the public face - exactly what you would expect.
For the most part, these Wikis share an identical code base on Git branch
"master." Development is done in branches that are pulled into master as user
acceptance is completed.
There are differences between the Wikis environments, and so I've got three
LocalSettings.php files. I can't just pull the Dev into Test or the Test into Prod
because of differences in the LocalSettings (database connections, error_reporting, etc).
Right now I'm doing a manual process outside of Git control. This makes me itch.
I would like to keep LocalSettings.php under Git version control with the rest of the
code, but that means three files with the same name.
Would I be on firm ground if I modified LocalSettings.php to automatically detect which
Wiki is in play and adjust its own settings? How do others handle issues like this?
One public and non-trivial example of wiki farm configuration is the
configuration system used for the Wikimedia production and beta wiki
farms [0]. The heart of this system is MWMultiVersion [1] and the
configuration files [2] that populate and use a SiteConfiguration [3]
object that chooses different settings based on the information
provided by MWMultiVersion. Besides the public configuration data
shown in the git repository [0] there are private settings [4] which
are only committed locally on the deployment server and distributed
from there to all of the MediaWiki servers. This system is pretty
complicated and likely to be overkill the majority of wiki farms, but
it does show some techniques for managing complex configuration.
A much more simple solution could be just to replace
LocalSettings.php's contents with an include of common settings and
conditional include of environment specific settings that you keep in
separate files (e.g. LocalSettings.dev.php).
[0]:
https://phabricator.wikimedia.org/diffusion/OMWC/
[1]:
https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-stag…
[2]:
https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-stag…
[3]:
https://doc.wikimedia.org/mediawiki-core/master/php/classSiteConfiguration.…
[4]:
https://phabricator.wikimedia.org/diffusion/OMWC/browse/master/private/Priv…
Bryan
--
Bryan Davis Wikimedia Foundation <bd808(a)wikimedia.org>
[[m:User:BDavis_(WMF)]] Sr Software Engineer Boise, ID USA
irc: bd808 v:415.839.6885 x6855