CI - alexdaube/My-Software-Engineering-Guide GitHub Wiki

Continuous Integration

Constantly integrate new features

Continuous Integration

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!