Over a million developers have joined DZone.

Using Declarative Continuous Deployment Pipelines

DZone's Guide to

Using Declarative Continuous Deployment Pipelines

Pavan Belagatti explains why he's in favor of using third-party Continuous Deployment pipelines instead of homegrown ones. Do you agree with him?

· DevOps Zone
Free Resource

The Nexus Suite is uniquely architected for a DevOps native world and creates value early in the development pipeline, provides precise contextual controls at every phase, and accelerates DevOps innovation with automation you can trust. Read how in this ebook.

Continuous Deployment is the key for every software-powered organization to increase overall productivity and make things move quickly. The motto is to automate repetitive tasks as much as possible, so that, the team can focus more on the product, developing the core features for the end user. 

However, many of you might argue to have a homegrown CD pipelines but Continuous Deployment (CD) today is synonymous with fragile homegrown solutions made of disjointed tools cobbled together with thousands of lines of imperative scripts which is hard to create, maintain and many of the organizations cannot afford it.

Continuous Deployment always aims at innovation and platforms like shippable have all the integrations and support for your organization from running unit tests to production and ultimately deployment.

Most organizations today are at L1 or L2 of this maturity model, i.e., they have a CI server that runs unit tests and packaging for every code commit. Some have the capability to deploy to one endpoint as part of their CI. However, this does not address the flow of that service or application through various test environments and ultimately to production.

In this video, Avi Cavale, Co-Founder and CEO at Shippable, walks you through the CD maturity model and demos an end-to-end Continuous Deployment with declarative pipelines for Docker applications. Here's a rundown of it.

Advantages of Practicing Continuous Deployment

Dev Teams

Dev teams should eliminate DIY for CD and focus on the product. This can be done by leveraging declarative YML-based constructs and not building imperative scripts, configuring and managing entire pipelines from Git, and visualizing application dependency graphs in a single pane of glass.

Test Teams

Test teams should automate repetitive tasks and focus on testing. This can be done by provisioning and destroying test environments on-demand, automatically firing test suites on code commits to isolate each problem to a single SHA, and managing product versions as part of the workflow and creating quality gates for automated product releases.

Ops Teams

Ops teams should make deployments frictionless without compromising security. This can be done by centralizing the management of configurations, security patches and access control across environments, tracking and auditing all changes made to production all the way back to source control, and using no-touch deployments and auto-scaling of applications in production.


Homegrown Continuous Deployment pipelines are prone to errors and creating them takes a lot of time. There's also a lot of money involved in spinning up servers and other supported objects. So, going for a third-party platform that does the work for you may be better. Doing so saves time that you can invest in analyzing your product and making plans for your next release. 

The DevOps Zone is brought to you in partnership with Sonatype Nexus.  See how the Nexus platform infuses precise open source component intelligence into the DevOps pipeline early, everywhere, and at scale. Read how in this ebook

continuous deployment ,devops ,pipelines

Published at DZone with permission of Pavan Belagatti, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}