Whenever I join a new project the team lead always hands me a list of dependencies and instructs me to pollute my machine with years of project customization which usually ends in a complete OS reinstall. From time to time I've been handed a VM instance which makes things better, however, there are no less than 3 virtual environment for OSX and while they should be able to coexist it's a risky proposition and the VM instance is usually opinionated. (containers can be a variation on the VM theme).
The biggest challenge is the subtle changes that take place in the environment over time that are unintentionally not captured in the environment.
Continuous integration is but the theme. The implementation depends on the tools and workflow your team has agreed upon. For example forking vs mainline; jenkins, drone, and so on. Push vs pull. Build dependencies.