Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

CI is a general term for building, testing and deploying the system you are developing, mainly to ensure it's quality, but also to automatically roll out new versions. CI is often automated by tools like ant, maven and gradle. These tools can be run locally, and/or on specialised servers that run build jobs on server farms. The advantage is both making builds independent of the individual developers and scaling to large systems. The build jobs may be triggered manually or automatically, when new code is committed and pushed to a code repository.

Examples of systems are Jenkins and Hudson (standalone), Travis (cloud provider), gitlab (integrated), Bamboo from Atlassian (software and cloud provider), ...

Code review

When providing code for an issue, you often want to review it before allowing the code to be committed into and merged with the code repository. This is particularly relevant when code is contributed from outsiders, like in open source projects, but also relevant in more closed settings, to ensure quality. Sometimes you also want to run CI on the code, before doing the review and stamp of approval.

Examples of systems are git (supports so-called pull requests where a branch in a fork is contributed to the main project), gerrit (hosts a copy of a repo and can run CI on it before changes are merged into the main repo).