Some of the best practices for the CI process, well outlined by Martin Fowler, include the following:
- Maintaining a (single) source repository
- Automating of the build process
- Having a self-testing build / automated testing--Automation also enables test metrics
- Everyone committing to the baseline everyday--Reduces conflicts, improves frequent communication
- Every commit to the main baseline should be built
- Keeping the build fast--Fast building process to provide rapid feedback
- Fixing the broken builds immediately--This also encourages the fixing of potential bugs before writing new code
- Testing in a clone of the production environment--More realistic tests
- Making it easy to get the latest deliverables--Reduce rework in the sense that builds are readily available to stakeholders and testers
- Maintaining visibility of builds and tests failure(s)--Everyone can see what's happening: Visibility of builds and tests failure(s)
- Automating deployment (for example Continuous Delivery)