What are the best practices of merging dev to master? We have 2 branches (master/dev) + some feature branches and 2 environments (production/dev). Our team is a very small people. What are the best practices of merging dev to master? 


Every morning?  
After integration tests?  
How about merging master with dev and then testing (hotfixes) then merging master to dev? 
Some release branches?


I don't want to create anything too complicated.
You can use "git flow" or more simple "gitlab flow".

Our small team merge into master on release or sprint ends.