Jenkins is a Java-based automation server that supports the discovery of defects early in the software cycle and the deployment of application packages in an automated manner. Thanks to a rapidly growing number of plugins, Jenkins communicates with many types of systems, building and triggering a wide variety of tests and integrations with various release management services.
CI involves making small changes to software and then building and applying quality assurance processes. Defects not only occur in the code, but also appear in naming conventions, documentation, how the software is designed, build scripts, the process of deploying the software to servers, and so on. CI forces the defects to emerge early, rather than waiting for the software to be fully produced. If defects are caught in the later stages of the software development life cycle, the process will be more expensive. The cost of repair radically increases as soon as the bugs escape into production. Estimates suggest it is 100 to 1,000 times cheaper to capture defects early. Effective use of a CI server, such as Jenkins, could be the difference between enjoying a holiday and working unplanned hours to heroically save the day. And as you can imagine, in my day job as a senior developer with aspirations for quality assurance, I like long boring days, at least for mission-critical production environments.
Continuous Delivery (CD) involves the deployment of applications in web servers or application servers located on-premise or in cloud environments. Jenkins supports integration with many cloud service providers and also supports integration with Platform as a Service offerings too. With shell script and command execution support, many deployment and configuration scenarios can be achieved too.
Jenkins can automate the building of software regularly and trigger tests, pulling in the results and failing based on defined criteria. Failing early via build failure lowers the costs, increases confidence in the software produced, and has the potential to morph subjective processes into an aggressive metrics-based process that the development team feels is unbiased.
Jenkins is not just an automation server, it is also a vibrant and highly active community. Enlightened self-interest dictates participation.