I'm not sure if this question is a duplicate but couldn't find anything of the sort even though it seems to be a common issue, so if it is a duplicate, excuse me for my inefficiency at searching keywords outside my knowledge.
I'm a software developer in a small team and I'm trying to help my Project Manager review our deploy process to make it better.
Our product is made of multiple components with different update cycles, hard to manage and where features often have hidden side effects in other parts of the code. After features are developed, they are left untouched until tested either by our QA in full regression tests that can last a week or more, or by our customer herself. Months can pass until a feature is ready to be deployed. We can have many features "on hold" at the same time, at different development or testing stages, and the biggest features can wait even years of refinement before being deployed.
Of course, when features are deployed they are merged together and the mixture can often be... explosive. This leads to bugs in the customer's production environment, which in turn raises suspicion about quality of code and incites "more testing time", which actually means more waiting time and more features to be deployed next...
Continuous Deployment seems to be unfeasible because our customer (with good reason) wants to oversee deploys and her deploy times are long. How can we reduce the risk of interferences and side-effects from multiple merges? I think this is too basic an issue not to have been addressed before.