Hello:
We're looking to refine our Shopify development workflow, but face a challenge: How do we maintain content changes via "customization" made to the live theme?
A secondary challenge: What's the ideal approach to Shopify development that avoids the flurry of useless-message commits made to git? How can we support traditional commits with useful messaging?
In our environment we have 6 developers (adjusting theme files) and 3 content editors (customizing section content).
Our proposed workflow is as follows:
Typical Workflow Setup:
- A production MAIN branch is synched with the live theme
- A STAGING branch is synched with a library theme for managing merges and testing before pushing to MAIN
- Each developer has their own branch/theme
- Developers make direct changes to the theme on Shopify which automatically syncs with their branch
Typical Workflow:
- At completion of each task, squash all relevant commits and name the squash the Teamwork Task ID + brief description example: '1251273 added banner section' << This is to make sense of all the usage-message commits made by the Shopify theme to GIT.
- Each developer merges STAGING into their own branch downstream << This is to support content managers making "customization" section changes on the main theme.
- Each developer merges their branch changes to STAGING upstream as tasks are completed, tested, verified.
- PM merges MAIN into STAGING downstream << This is to support content managers making "customization" section changes on the main theme.
- PM tests STAGING for completion of tasks and against QA testing list
- PM sends test failures back to devs
- PM merges successfully tested STAGING into MAIN upstream
Workflow exceptions:
- Hotfixes to MAIN must be propagated to the STAGING branch
- Merge MAIN into STAGING downstream
- Customizations to MAIN must be propagated to the STAGING branch
- Merge MAIN into STAGING downstream
Additional Tasks:
- Daily check for changes to MAIN, merge to STAGING downstream << in case a downstream merge was missed after a change to MAIN.
Possible Variations:
- Would it be less complex, better to use CLI for theme development instead of having individual developer themes on the Shopify site?
- Also considering eliminating the staging branch
Please advise - what is your approach? what would you change about this approach?
Thanks!