continuous inteagration (CI) - nateleavitt/mindump GitHub Wiki
The goal of continuous integration is that the application is in a working state all the time. CI is a practice NOT a tool!
- represents a paradigm shift - Your software is broken until somebody proves it works, usually during a testing or integration stage
- the application is built and comprehensive tests are run against it on every commit
Benefits of CI
- deliver software much faster
- fewer bugs - bugs are caught much earlier in delivery process
- cheaper to fix - significant cost and time savings
Three things needed before CI implementation
- version control
- an automated build - be able to build and run test scripts from the command line.. apart from IDE
- agreement of team - smaller commits, more often.. it is a practice not a tool
Essential Practices
- do not check in a broken build
- always run all commit tests locally before committing
- wait for commit tests to pass before moving on
- never go home on a broken build
- always be prepared to revert to previous revision
- time-box fixing before reverting (10 min?)
- do not comment out failing tests
- take responsibility for all breakages that result from your changes
- test driven development