Editor’s Note: This guest blog post was contributed by Tracy Ragan, CEO of DeployHub.
With Jenkins popularity and strength around continuous pipeline orchestration, it is in the ideal position to drive software releases from development through production. Often it is in this “last mile” (as it is sometimes known) that tools are used to manage, track and promote releases to target environments kick in. These tools are known sometimes as “Application Release Automation.” Enter DeployHub, an open source release automation platform.
Many agile teams have already added Jenkins workflow actions to run a simple deployment script to update application components. Often what also must be coordinated are database updates, environment variable changes and infrastructure configurations (often which differ with implementation, time, and can be very specific to your company). One of DeployHub’s features is “agent-less” deployment, which is often welcome in locked down environments.
DeployHub Team and Jenkins – an open source blueprint for continuous deployment
DeployHub Team is an open source Jenkins plugin for achieving continuous deployments, without agents. The open source solution is both hosted or can be installed on-premise. It integrates with the Jenkins Blue Ocean experience to provide a consistent ‘push’ deployment process across the Pipeline on a high frequency basis. DeployHub empowers development teams to perform next generation software deployments. It evolves deployments from and ‘endpoint release’ practice to an intelligent repository of deployment data – a single source of truth for deployment configurations. Rolling forward, jumping versions, rolling back becomes as easy as a check-out of the deployment configuration. All deployments become fast and iterative.
One novel feature of DeployHub is that it adds deployment configuration versioning to the process. Each time you update your software configuration, DeployHub tracks and versions the changes to become your single source of truth. DeployHub tracks application binaries, the associated database, environment variables, or even a change to a Kubernetes cluster. Deployment versioning allows DeployHub to perform iterative updates and track the unique microservice versions that make up the monolithic equivalent of an application version. And Jenkins remains the point of orchestration and control of when a continuous deployment is to be executed. DeployHub targets can be varied from microservices, to in place updates on a server, but tracked as one release or deployment.
Setting up the DeployHub Jenkins plugin
DeployHub includes a simple Jenkins Wizard to help set up your DeployHub Jenkins plugin. Once the high-level project information is entered, the Wizard will generate what is needed for Jenkins and DeployHub to communicate.
DeployHub Jenkins plugin
When executing DeployHub from Jenkins, all logs associated to the deployment are reported back to the Jenkins pipeline run. Success/Fail is reported to Jenkins.
DeployHub Team Logs
Jenkins Blue Ocean and DeployHub
As you execute your Pipeline, the Jenkins Pipeline is executed for the different states. No manual updates to scripts are required to push your deployment across the pre-prod and prod states, even when these states are mixed, use different variables and are substantially larger in terms of endpoints. There is no need to manipulate the jenkinsfile for variable substitution; DeployHub handles variable processing as part of the Package, resolved by each state uniquely. All deployment versions are reported back to Jenkins showing up in the Blue Ocean visualization along with their unique steps.
Blue Ocean Pipeline with DeployHub Deployments and Steps
Within your Jenkinsfile you simply add code to call DeployHub to perform the deployment heavy lifting. Logic is added for calling out to DeployHub for each stage in your pipeline. Below is a little sample of Jenkinsfile code for moving a software update to Production.
dh.moveApplication(url,user,pw, app ,"GLOBAL.American University.CSC589.chili.Development","Move to Testing"); dh.deployApplication(url,user,pw, app, "GLOBAL.American University.CSC589.chili.Testing.Test"); (dh is the integration with DeployHub - See full sample code)
DeployHub Pro for the enterprise
DeployHub provides support and a Pro upgrade to the open source ‘Team’ version. The Pro version adds smart calendars for no-touch approvals (as you may have certain times of day or week that you want to carefully control releases), Folders to provide organizational structure, the ability to secure Environments, Release Trains and Change Requests. Integration with the popular issue trackers such as Jira, Bugzilla and GitHub are included.
Jenkins is in the perfect position to become the driver of continuous deployments. DeployHub can integrate with Jenkins to provide additional controls over the release process to make it fast, iterative and safe. DeployHub allows all teams from development through testing to collaborate and be comfortable with how releases are managed across the Jenkins continuous delivery pipeline. While Jenkins continues to be the main driver of continuous deployments, DeployHub becomes the single source of truth for deployment configurations. DeployHub’s backend version control engine makes rolling forward, rolling back or even version jumping easy and automated through the Jenkins Pipeline. And if you need more security features, consider DeployHub Pro.
Getting started and next steps
The first step to take is sign-up for DeployHub Team and connect it to your Jenkins process.
The hosted team version can be used to deploy to unlimited endpoints by unlimited users.
This Demo Video shows DeployHub and Jenkins showing how DeployHub interacts with the pipeline (including the blue ocean visualization).
Get Involved in the OS Project. Help us create the best, open source continuous deployment platform available.
Jenkins and DeployHub Whitepaper - Read More about how they work together.