To set up CI, there are a few things that we need to put in place, some of them you'll probably be doing already. My suggestion is that we don't attempt to implement all steps at once unless we have an experienced DevOps specialist in our team. Instead, we'll need to learn as we go. The following stages are suggestions:
Stage 1:
- We use a source code repository to manage our software, its configuration, and documentation
- We check-in code at least once a day
- Both the building and testing of our software is optimized for us to get fast feedback
- Our code is built at every check-in
Stage 2:
- All tests are automatically run at every check-in; any failures are flagged
- The build and test results are obvious to all
Stage 3:
- Tests are executed in a test environment similar to our production environment. Teams usually set up a CI server to manage this; tools such as Jenkins, Concourse, Codeship, and TeamCity are perfect for this job.
- Our software is deployed automatically to the test environment after a successful build.