Continous Integration Patterns : avoid the integration pains & mindless maintenance chaos
| Pattern | Description |
| Private Workspace | Develop software in a Private Workspace to isolate changes |
| Repository | Commit all files to a version-control repository |
| Mainline | Develop on a mainline to minimize merging and to manage active code lines |
| Codeline Policy | Developing software within a system that utilizes multiple codelines |
| Task-Level Commit | Organize source code changes by task-oriented units of work and submit changes as a Task Level Commit |
| Label Build | Label the build with unique name |
| Automated Build | Automate all activities to build software from source without manual configuration |
| Minimal Dependencies | Reduce pre-installed tool dependencies to the bare minimum |
| Binary Integrity | For each tagged deployment, use the same deployment package (e.g. WAR or EAR) in each target environment |
| Dependency Management | Centralize all dependent libraries |
| Template Verifier | Create a single template file that all target environment properties are based on |
| Staged Builds | Run remote builds into different target environments |
| Private Build | Perform a Private Build before committing changes to the Repository |
| Integration Build | Perform an Integration Build periodically, continually, etc. |
| Continuous Feedback | Send automated feedback from CI server to development team |
| Expeditious Fixes | Fix build errors as soon as they occur |
| Developer Documentation | Generate developer documentation with builds based on checked-in source code |
| Independent Build | Separate build scripts from the IDE |
| Single Command | Ensure all build and deployment processes can be run through a single command |
| Dedicated Machine | Run builds on a separate dedicated machine |
| Externalize Configuration | Externalize all variable values from the application configuration into build-time properties |
| Tokenize Configuration | Token values are entered into configuration files and then replaced during the Scripted Deployment |
| Protected Configuration | Files are shared by authorized team members only |
Reference : Paul M. Duvall, Continuous Integration: Improving Software Quality and Reducing Risk

