Using Continuous Integration in DevOps
Continuous Integration is a method of ensuring that a given software asset builds correctly and plays nicely with the rest of the platform. The keyword here is continuous, which, as the name implies, is as frequent as possible. There are quite a few CI tools available, from the commercially licensed (such as Bamboo, Go, or TeamCity) to open source ones (such as Jenkins, Hudson, or CruiseControl).
Continuous Integration is basically a solutions for orchestrating the execution of your automated scripts when certain events occur, for example, when you commit a change to source control. The CI jobs contain a list of activities that need to be run in quick succession; for example, get the latest version of source from source control, compile to an executable, deploy the binary to a test environment, get the automated tests from source control, run them, and capture the results.
If all is well, the CI job completes and reports a success. If it fails, it reports this fact and provides detailed feedback as to why it failed. Each time you run a given CI job, a complete audit trail is written for you to go back and compare results.
CI tools can be quite powerful, and you can build in simple logic to control the process—for example, if all of the automated tests pass, the CI tool can add the executable to your binary repository, or if something fails, it can e-mail the results to the engineering team. You can even build dashboards or radiators to provide an instant and easy-to-understand visual representation of the results.
CI solutions are a must for CD. If you are building and testing your software changes on a frequent basis, you can ship frequently. Using a CI solution will also help in building the DevOps relationships, as the Ops half of the relationship will be able to see proof that builds and tests have been successful. They could also be heavily involved in defining and creating some of the dashboards.
Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides plugins to support building and testing virtually any project.
Hudson monitors the execution of repeated jobs, such as building a software project or jobs run by cron. Among those things, currently Hudson focuses on the following two jobs: Building/testing software projects continuously and Monitoring executions of externally-run jobs.
Bamboo does more than just run builds and tests. It connects issues, commits, test results, and deploys so the whole picture is available to your entire product team – from project managers, to devs and testers, to sys admins.
Team Foundation Server Build Catch bugs and other quality issues earlier in development. Set up continuous integration using build to validate code on clean configurations and integrate tests for extra assurance. Stay up-to-date on the latest build health from your project home page or within Visual Studio.