Our simplified structure is:
SQL Server -- developer2_database
\ main_database <-- report server
developerX_database - database that is used only by single developer, he is free to deploy anything and anytime there.
main_database - currently the database that is automatically updated with every push to develop branch. REPORTS that are under testing are pointed to that database.
This is more or less the vision how do we see the process is supposed to be look like:
* Dev creates feature branch
* Dev push changes to feature branch
* Dev create pull request to develop branch
* Other devs approve pull requests
* Release manager merge feature to develop branch
* Relase manager initiate build that would test the changes and output deploy script
* Release manager reviews output script and run it on prod
* Release manager merges changes to master branch
Now we have problems/questions:
1) We would like to have clean pull requests only, the best way would be that before we merge it to develop it is supposed to be buildable and all tests passed. How and where to test it?
2) We would like to allow the business to test report before it merged into the develop database. This process can take time so the "feature" version of the database state must exist somewhere. Where? If we use "developer" database for that then he will not be able to switch to another feature as he will just nuke all his changes from previous feature when he would deploy the new one.