All business organisations have one key objective – to get value from the products or services that they offer. In today’s fast-moving business environment it has become necessary to adopt practices of Continuous Integration (CI) and Continuous Delivery (CD) to meet these ends.
CD needs to integrate plenty of the basics of CI like the ideas of automated testing, unit testing, ‘failing fast’ (when a ‘build’ or product fails quickly) and static analysis. CD stretches it a bit more into the fields of deployment in production and delivery. In CD it’s implied that each build that succeeds is used in production, while in CI it’s implied that each build can be obtainable for use in production.
A first class build system gives relevant, concise and fast feedback. It must also produce an appropriate finished item after the code is checked in to get a likely release candidate. (A likely build candidate is one that comes very close to expectations.)
To make every build a likely release candidate, you must ensure that every build is rigorously tested and a complete report on the build’s constancy and design release has been checked. You will have to do this automatically, without human intervention. To achieve this, split the build into smaller segments and, if necessary, deploy the sections in a parallel manner. The pipeline segments can be done in series or in parallel. If a phase succeeds, it mechanically shifts to the next stage — that’s why it’s called pipeline.
Continuous Delivery can be done without build pipelines – and use of build pipelines can be done without Continuous Delivery.
To implement CD you don’t need any special tools. The normal CI system toolset will do.
TeamCity supports a downstream build and enables you to split your builds into a number of segments which can be run in parallel or in series — the same, in theory, as a pipeline.
Maven’s success is due to its simplicity. It’s an XML scripting language suited for software build tasks.
Sonar is a tool for reporting and quality measurement. It provides an extremely readable report and also contains lots of helpful information in one place.
CruiseControl, is a highly popular CI System, sustains downstream builds. However, it doesn’t support build pipelines.
The enterprise CI ‘Go’ was designed with pipelines in mind. It works very well. The enterprise edition costs money unlike Jenkins. But there’s a free option: Go Community Edition which provides support for pipelines. The enterprise What Go offers a great facility to manage manifold build agents which will allow you to craft a build grid.
Bamboo supports the idea of downstream builds but the pipeline vision in Jenkins brings everything together.
Jenkins is a CI application, like CruiseControl Hudson. It’s basically a hyped scheduler, with a smart front end. It only implements the build scripts each time there is a trigger. Jenkins contains a build pipelines plugin which gives you exactly what you want.
But it doesn’t really matter what you use — Nant, Ant, Maven or Gradle, all support the necessary functionality to get the running i.e. the capability to target precise build phases.
To keep it simple, we’ll create pipeline phases, like: 1) Unit Test 2) Code Coverage 3) Sonar (Jacoco) 4) Deploy to INT 5) Integration Test 6) Manual Testing (build signoffs) 7) Deploy to UAT
The successful conclusion of these unit tests will start the acceptance tests. After these complete, two pipeline stages are generated:
Once the deployment has completed, the integration phase will commence. If these go by, you’ll deploy your application to your UAT environment.
Delivering optimal quality with reduced cost rests on the efficiency of Innovify’s processes. You need the right tools, like Jira, Stash, Confluence, Git, Sonarqube, Jenkins, Teamcity and the right frameworks, like Zend, Yii, Code Ignitor, Struts, and Spring, to guarantee swift and impeccable execution. The wrong structures clog up the machine, slowing down development and impeding on the quality of the final product. We ensure that doesn’t happen with a factory-like system of continuous testing and delivery.
Innovify is a London-based product foundry that gets your ideas off the ground and converts them into scalable software. As an end-to-end product management company, we create value for your user at every stage in the product lifecycle; delivering better performance, cleaner design, usable functionality, and a superior user experience to your customer.
Client Services Director