The .theme-check.yml file allows you to
specify a root folder for the theme files ,
however the GitHub integration doesnโt
seem to use it and fails with the generic Branch isnโt a valid theme message.
While I can share & push via the theme
command , that isnโt exactly optimal.
The integration doesnโt have any options ,
error log or config files as far as I could see.
Unfortunately you are unable to use the .theme-check.yml file to customize the root folder for theme files with the GitHub integration. This is specified in the docs:
You can connect only branches that match the default Shopify theme folder structure. This structure represents a buildless theme, or a theme that has already gone through any necessary file transformations.
Folders in the repository that donโt match the default theme structure are ignored.
You will need to reorganize a branch of your repository to match the expected folder structure in order to use the GitHub integration. I hope this helps
There are no current plans to add support for custom repository structures/monorepo support, but I will be sure to raise it with the team as a feature request!
The integration code isnโt a public GitHub repo of the Shopify org is it?
Hi @John, depending on what you mean by a monorepo + multi-theme support, I may have a solution for you.
With the Shopify CLI itโs relatively straightforward to replace the GitHub Integration with GitHub Actions. This will give you complete control over how commands are run.
Here is a set of example workflows to replicate what the GitHub integration does.
You donโt need to use Shopkeeper to use the listed GitHub Actions. They can be adapted to use plain Shopify CLI commands. Shopkeeper is helpful if you want to use a blue/green deploy strategy or if you want to separate theme settings from theme code.
Instant updates are not possible because there is no webhook Iโm aware of to know when a asset is changed.
You can poll, though. This is the strategy we employ on our projects for settings. You can setup a GitHub action to run on a cron pattern and you can use the CLI to decide what you pull down.