We have a scenario where multiple developers are now working on a single process app. They are either adding new functionality or upgrading the previous one.
My question is how can we have developers keep working on the same process app while
1) only able to deploy tested changes.
2) avoiding unfinished changes from being deployed ( If one developer is still working on his task, how can we have the other developer deploy her changes to an environment),
3) these developers need to test their work to ensure changes are actually working as intended. So at some point, they'll need to deploy the changes to test. How can we ensure that only their work is being deployed and not another developer's unfinished work is getting deployed?
In short, how can we have multiple developers working on one process app without interfering with each other work?