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
The solution provides a simple workflow that now involves
1) Export content from the UI of any environment
2) The exported content is written into the codebase (and thereby version controlled)
3) Git push from that environment, and Git pull on the other environments
3) Import the content by one drush command (drush dcim <content module name>) on any environment.
Pics from the contrib module: