Page MenuHomePhabricator

Gather requirements for preview environment POC
Closed, ResolvedPublic3 Estimated Story Points

Description

What does the team need to get a functioning preview environment for their work?

Define what infrastructure, services, extensions, and skins will be needed by the collaborating development team for the POC of the preview environment.

Resolution criteria:

  • A list of the requirements
    • infrastructure (databases, etc)
    • services to be deployed
    • extensions needed for testing
    • skins needed for testing

Event Timeline

I’ve made a list of preliminary requirements for the preview environment:

Infrastructure

  • MariaDB or other Database for MW
  • ElasticSearch

Apps/Services

  • Mediawiki

Skins/Extensions

  • Ability to enable/disable any extension
  • Ability to enable/disable any skin

Extra Requirements

  • Ability to externally send requests to any deployed items
  • Ability to access command shell for any deployed items

Secondary Goal

  • Ability to deploy link recommendation service

Are there any things missing? Any things here that should not be? Any finer detail to be aware of?

jeena changed the task status from Open to Stalled.Jul 23 2021, 9:42 PM

Growth team out of office

jeena set the point value for this task to 3.Jul 27 2021, 9:49 PM
kostajh changed the task status from Stalled to Open.Aug 9 2021, 3:15 PM
kostajh added subscribers: mewoph, Tgr.

... we're back!

The requirements you put in the description look good to me. @Tgr @mewoph please weigh in if you have thoughts on this as well.

This will be something like an official version of patchdemo, I suppose?

  • Apache
  • Memcached for object cache? MySQL could be used but we'd probably prefer a more production-like setup?
  • For job queue we can probably stick to MySQL + a cronjob? On one hand, hasn't been used in WMF production/beta in ages (we used Redis then Kafka) so less compatible, e.g. has job size requirements that production doesn't and that has caused problems in the past (T124196). On the other hand, a lot easier to debug than Redis.
  • RESTBase? probably overkill though

How would extensions be installed?
We'll probably want a mechanism for importing some content (such as a MediaWiki dumpfile) during the build step.

Thanks for the extra details @Tgr !

Yes, I consider one difference between this and patchdemo being that I would like to also allow deployment of services as desired by the developer. In addition, I see having some shared resources that could be used by the environments if there weren't changes to deploy for a particular service.

I still need to do some thinking on how we will install the extensions, so if you have any ideas, I'd love to hear them! I should take a closer look at how patchdemo works, too. I also have this task for going into a little more detail on how things might work here (I should flesh out the description a little more): T283893
I originally thought we could use the image we are building for mediawiki in production which will contain all the production extensions, and have some step to enable the desired ones, but that wouldn't work if you wanted to test a change to extension code as well.

Thanks for the extra details @Tgr !

Yes, I consider one difference between this and patchdemo being that I would like to also allow deployment of services as desired by the developer. In addition, I see having some shared resources that could be used by the environments if there weren't changes to deploy for a particular service.

I still need to do some thinking on how we will install the extensions, so if you have any ideas, I'd love to hear them! I should take a closer look at how patchdemo works, too. I also have this task for going into a little more detail on how things might work here (I should flesh out the description a little more): T283893
I originally thought we could use the image we are building for mediawiki in production which will contain all the production extensions, and have some step to enable the desired ones, but that wouldn't work if you wanted to test a change to extension code as well.

Patchdemo has a centralized configuration; it would be nice if preview-environment allowed configuration in core/extension/skin directories. Just like there is a .pipeline directory that can be read by CI, there could be a .preview directory (or something) that allows for specifying which extensions need to be enabled, configuration to set, scripts to run before/after wiki installation, before/after each service is started, etc.

I'm going to close this as resolved now.

@kostajh I added something like what you mentioned to one of the possible workflows in T283893