CI - alexdaube/My-Software-Engineering-Guide GitHub Wiki
Continuous Integration
Constantly integrate new features
Advantages
- Tools => Jenkins, Travis, BuildBot, etc...
- Rapid retroaction => Easily see incompatibilities with new code. Immediately see breaking changes
- Can correct problems quickly
- To test into a control environment
- Automatic tests execution
- Keep a functional version at all times
- Make communication easy
- Minimal regression risks
- Rapidly identify problems
- Build and test on multiple environments
- Make people work on small tasks. Compartmentalization
Good Practices
- Automated build
- Automated tests upon build
- Commit often
- Always commit functional code
- Compilation and test time should be fast. Have nightly and daily build otherwise
- Environment should be as close as production as possible
- Automated deployment
- Results are seen by all team members
- Build failures must be a good thing. Not be afraid of it. Rejoice the bug has been found!
- Don't put too much emphasis on tendencies
- It can't always be green
- If it's red; keep calm, and correct it
- For big refactoring it takes time...
- Predict time to maintain integration system. It should be up to date
- It shouldn't use to blame others!