Background: Working for an international network and communication enterprise, it is essential to have a complete analytics solution that generates insights by analyzing unstructured text data for informed decision-making. It is equally important to allow teams to build applications across platforms continuously. For this, we turned to Jenkins since it is a very popular Java-based, open-source, continuous integration (CI) server.
Goals: Building reliable insight artifacts.
"Jenkins is a very popular Java-based, open-source, CI server that allows teams to continuously build applications across platforms.
Solution & Results: To gain visibility into our DevOps process, we used the Artifacts for Insight product. It is built as jar packages — wrapped as docker images — then published as helm charts and deployed as internal profiles. Building and releasing all of the insight artifacts to release repo from a single job was something we’d been hoping for, and that is precisely what happened.
We thought it would take a long time to build and perform the operations because there is no support from Artifactory to promote different types of artifacts simultaneously. Releasing activities like publishing, testing, and promoting everything with just one-click seemed daunting. But it was all made easy with the help of Jenkins’s automated promotion option. And before promoting to releases, we were able to test by deploying in test clusters based on just a few input parameters.
What’s great about Jenkins is that it gives you the option to create a downstream/upstream job and report the results back to the parent job. With the help of integrated Ansible plugins, we were able to test the candidate artifacts first in our test cluster. Based on the results from the test job, the rest of the promotion stages worked smoothly. All I had to do was define the logical flow, and with the help of the Jenkins syntax generator, I was able to quickly arrive at the pipeline code.
Even when the jobs failed, and we had to scroll through thousands of lines of console output, Blue Ocean came to the rescue. It has such a well-designed UI, making it easy to visualize the earliest possible stage in which to repair the issue.
Capabilities:
Declarative pipelines for easy understanding of job flow.
Ansible plugin for cluster deployment and management from Jenkins.
Great job flow visual from Blue Ocean.
Parameterized trigger plugin for a dynamic environment.
Global build status plugin for better capacity and system planning.
Surprisingly it took less time than we thought. When we want to publish a release package, we simply need to click that one 'BUILD' button.
And the results are long-lasting, including:
reduced build times
promoting reliable insight artifacts
faster deployments
no confusion