Digital.gov.bc.ca is a WordPress instance that is supported by both a content team and a development team. Each team has a workflow for introduces changes, and those workflows must be coordinated to allow for streamlined publishing.
Development Team Workflow
The Development team is responsible for maintaining both the infrastructure, and the themes and plugins. The infrastructure is maintained and deployed via a CI/CD pipeline that is controlled by Kustomize (COMING SOON: and ArgoCD). This pipeline (will) automatically check for updates of WordPress and any used plugins, and update deployments on OpenShift.
OpenShift
The OpenShift space contains 3 instances of WordPress, but more can be deployed by following DevOps Operations guide.
digital-dev: This is where updates will be automatically deployed, and new feature development can occur for the theme and custom plugins.
digital-test: Once a new feature is ready for testing, we can perform a back migration from production and combine it with new theme and plugin changes here to do some initial testing. This is a public site that may be unstable. Content work that is dependent on new features can be done here (only if necessary - to avoid synchronicity issues, production editing must be locked down while this is occurring, and we must do a forward-migration of content)
digital-prod: The live site. Theme and plugin specific development work should not occur here, and should be used for content development only.
Content Team Workflow
The content team will primarily work within the production instance of WordPress. The workflow needs to be determined by the content team, and will inherently be complex due to the inclusion of third-party contributors.
A suggested workflow was previously built out in a custom plugin, and reflects this Mural. The workflow may be different per team. We don’t need to implement this right now.
One of the requests of the content team was to have the ability to edit published pages without the changes being immediately reflected. This can be accomplished with a plugin, Such as Yoast Duplicate Post (Rewrite and Republish) or Revisionize.
It should be noted that these features and workflows only work in production. If the content team needs to make changes that are dependant on a new feature (and do that development in UAT), then we would need to pause third-party contributions, or otherwise redirect them to UAT to also perform their changes there. The author workflow would also be reflected there. Pipeline plugin? Content Blackout while changing in UAT?
Content editing is restricted by the digimod-developed editor-rbac-plugin. The documentation on how to use this plugin is in the content team’s oneNote.