September 21, 2017 By: Praveen Kumar
To start with, let me share a simple definition of DevOps: Set of processes and tools, enabling faster delivery of projects to business on a regular basis. The key here is “on a regular basis”.
Continuous Integration (CI) & Continuous Delivery (CD) are the 2 key processes on DevOps that enable faster delivery. Using tools and techniques like Jenkins, Unit Testing, Automated Functional/Integration testing and automated release of builds to QA/Stage/Prod environment, CI/CD has really improved the release cycle and reduced the number of back-n-forth in this process.
One of the key aspect in improving the CI/CD process is to leverage machine learning and bots in CI/CD. Following are the few objectives which came to my mind around this:
- Build intelligence on when to run complete build and when not.
- Find out the causes of frequent build failures and recommend corrective actions.
- Developer(s) to be sensitized about build failures and ranking is given for their contribution to successful builds.
And there will be many more. All of those have a common theme: Learn from the data and act before failure.
Consider this example: At a broad level, CI/CD tools can run builds at various levels; component level, application level or even running the complete suite. Depending on stacks and systems, running the build for a complete suite could take considerable time and resources. Some of the key questions to ask ourselves:
- Can the major dependencies which generally cause the build to fail be identified early?
- Can a pattern analysis predict the build failure?
- Can a trend of build failures indicate certain team behaviour?
There are many such answers which will help optimize the overall CI/CD process.
While frequent code commits are strongly recommended, it is also imperative to ensure that a valid and legitimate code has been checked in and a working build can be produced. So, keeping an overall view of delivering working software is really important.
As software developers, the key deliverable is code and working builds. This is just one area which can result into a better-quality delivery from developers.
Looking forward to suggestions and experiences.
Keep delivering value!!