When using Drupal 7 with larger projects, we used a Custom module together with Features, Environment and Environment Indicator modules to keep special environment settings apart. We had at least one feature module for each environment containing something like this:
Production
- no dblog module active
- no devel modules
- all sorts of caching enabled
- red coloring on Environment Indicator
Staging / Testing
- dblog module active
- no devel modules
- some caching disabled
- yellow coloring on Environment Indicator
Staging / Testing
- dblog module active
- all sorts of devel modules active
- caching disabled
- green coloring on Environment Indicator
When developing we used to push new code to production when it was finished and tested. After successful deployment, we cloned the database down to staging and development environments to be sync with the state of production in terms of new content. After that we would run commands like drush env-switch staging
to tell Drupal to set environment to Staging and run some custom hooks that would enable the Staging feature module and its settings and dependencies. This way Production, Staging and Develop had different sets of modules and configuration but the same state of content.
After reading and testing into Configuration Management, i fail to see how i could accomplish such a workflow. When using drush config-export staging
it exports all current settings into staging directory, which i can check into git and deploy it on my server. Features for D8 lacks of some things that have been in D7. I miss a settings we had in D7 and i am not able to add a dependency without additional settings. I don't depend on Features if there is another way of doing things like this in D8.
What am i missing in D8? What would be the current workflow to get such environment dependent settings and modules active and different environments in Drupal 8?
Thanks for you help!