Reconsidering Continuous Integration in the Enterprise
Continuous integration (CI) undoubtedly needs to evolve, but that doesn’t mean replacing one CI server with another. Many companies approach us seeking a stable integration process tailored for their enterprise, wondering what they should use to replace Jenkins for enterprise CI. My initial question is, “What does enterprise CI mean to you?”
The majority of organizations rely on Jenkins as their primary Continuous Integration process, as it has won the adoption race. Consequently, significant investment has been made in Jenkins over time. There was no proof of concept or budget specifically allocated for implementing Jenkins CI; rather, it naturally grew out of the open-source community over the past few years. Now, companies are faced with the challenge of maturing CI into full-scale continuous delivery, with role-based security, approval gates, and advanced workflows that support the entire development lifecycle.
Advancing from continuous integration to continuous delivery requires a comprehensive assessment of each team’s specific requirements. Jenkins undeniably caters well to development teams. The real question is, how can Jenkins meet the maturity needs of testing and production teams?
It’s essential to remember that the Jenkins CI process itself doesn’t fulfill any particular tasks; it merely orchestrates a series of activities in an “if this, then that” rhythm. To achieve mature continuous delivery, you must identify which steps in the Jenkins developer workflow need to be replicated in the testing or production workflow. By identifying and improving these steps, you can build upon the existing investment in Jenkins.
Identifying Common Ground
So, what workflow steps are common across all teams and should be repeatable from development to production? By establishing commonalities, you essentially define the processes that require maturation. From a high-level perspective, most companies discover that all stages of the pipeline necessitate a deployment process followed by a testing procedure. Yes, even production deployments often incorporate some form of smoke testing – loading the application and processing a single test transaction.
By examining these two shared steps in the CI process, you can identify where “business maturity” might be lacking. In most cases, developers create their CI process using readily available tools. They write version control check-out scripts, build scripts, deploy scripts, and test scripts. Occasionally, they may employ open-source solutions for partial automation, but such automation has its limitations.
The next question becomes, “Can we mature our Jenkins continuous integration into continuous delivery by improving these common steps?” For most companies, the answer is a resounding “yes.” Take a close look at how Jenkins executes these common steps. You’ll find that Jenkins is executing scripts that can’t mature within the pipeline. Jenkins is constrained by the capabilities of the scripts it executes. The common steps executed throughout the pipeline require additional features and functionalities that these scripts cannot provide. A developer’s test script may not be robust enough for testing purposes. Similarly, a developer’s deployment script is unlikely to be robust enough to facilitate code updates across multiple endpoints in the pipeline, reaching testing and production. Moreover, most organizations desire an auditable, non-script-dependent testing or deployment process that doesn’t rely on a Jenkins agent for execution.
Incorporating More Automation into Your Jenkins Workflows
Jenkins excels at executing external DevOps tools. In fact, most DevOps tools already offer robust plugins for Jenkins. Consequently, maturing your Jenkins CI into mature continuous delivery is as simple as selecting the appropriate DevOps tools to replace the one-off scripts that hinder Jenkins from being more than just a CI server for developers. You might be wondering about role-based access and private workflows within teams. Again, the question is which steps in the Jenkins workflows require security. Most likely, the DevOps tools you choose to enhance your Jenkins process will already provide security features. For instance, replacing deployment scripts with a robust application release automation tool will offer the necessary security for deploying to different environments. The testing or production Jenkins workflow can then invoke the deployment tool, and the deployment tool handles environment security. This principle extends to more sophisticated testing tools as well.
In other words, there’s no reason to believe that your Jenkins workflow requires security built around it if you are replacing one-off scripts with more intelligent solutions for the recurring processes within the pipeline.
Watch Out for Waterfall Habits
Many of us believe that gated approvals between workflows are integral to an enterprise process. However, when considering agile practices, it becomes evident that gated approvals may hark back to the waterfall approach. The best approach is to allow workflows within the pipeline to operate in a rhythm that aligns with your agile cadence. If a release candidate progresses through the pipeline, let the more advanced deployment and testing tools block the updates and report to Jenkins why a release did not occur. These tools often come with built-in security measures; therefore, there’s no need to impede progress in too many places. Indeed, if you’re relying on one-off scripts for everything, the workflows must be blocked with gated approvals. Nevertheless, you will eventually realize that these one-off scripts hinder the maturation process. The sooner you move away from using them for recurring processes within the pipeline, the sooner you’ll achieve a mature continuous delivery process suitable for large enterprises.
Conclusion: So above is the Don’t Discard Jenkins for CI Just Yet article. Hopefully with this article you can help you in life, always follow and read our good articles on the website: Megusta.info