Drupal 8/9 - Content Staging and Deployment - One strategy to beat them all!
Published on August 25, 2021
I recently posted on the Globant Medium blog comparing the various Content Staging and Deployment Strategies that I explored. The options explored included Deploy module, Content Sync, Content Synchronizer, Entity Share, and paid services like Content Sync, Acquia Content Hub, and Entity Pilot.
The criteria for the search were:
- The solution is opensource and not requiring a paid service.
- Depends on modules that have good community support, active development, usage and maintenance.
- Allows moving content from one environment to another
- Allows version control of content
- Supports most (if not all) field types, including paragraphs to start with
- Supports translation
- Supports updation of existing content and not just initial import
- Recursively picks all dependency content required
The solution we landed on was a combination of
- Default content module
- Patch from the fork of this issue (to allow updation of existing content, and not just creating new content)
- A new contrib module (Export Action for Default Content) that we built, that provided a UI for easy export of multiple content via Views
Workflow
The solution provides a simple workflow that now involves
- Export content from the UI of any environment
- The exported content is written into the codebase (and thereby version controlled)
- Git push from that environment, and Git pull on the other environments
- Import the content by one drush command (drush dcim <content module name>) on any environment.