What is continuous delivery?
Explore IBM's continuous delivery solution Subscribe to AI Topic Updates
Illustration with collage of pictograms of gear, robotic arm, mobile phone
What is continuous delivery?

Continuous delivery lets development teams automate the process that moves software through the software development lifecycle.

Continuous delivery can provide many benefits when provisioning an integrated toolbox, including:

  • Reduce time to deployment through continuous testing and development.

  • Decrease the costs associated with traditional software development.

  • Scale software development based on project size.

  • Deploy code automatically into each phase of the development cycle.
The Total Economic Impact™ of IBM Robotic Process Automation

See a cost and benefit analysis of IBM Robotic Process Automation (RPA).

Related content

Register for the guide on observability

Continuous delivery best practices

You might want to consider this set of best practices when using continuous delivery:

  • Make every change releasable: If you use continuous delivery to make every change releasable, you must include user documentation, operations runbooks and information about what's changed, for auditing purposes.

  • Embrace trunk-based development: Continuous delivery builds on continuous integration. Avoid branches that delay integration as much as possible so that every change is built, tested and deployed together for the fastest feedback.

  • Deliver through an automated pipeline: To successfully implement continuous delivery, you need a well-constructed, automated delivery pipeline to ensure all your code releases move into your test and production environments in a consistent way.

  • Automate as much as possible: In continuous delivery, you must automate as many processes as possible in your software development lifecycle. This automation creates a good, reliable delivery pipeline, not only for code builds and deployments but also for the creation of new development environments.

  • Aim for no downtime: To ensure application availability while you make frequent, continuous delivery updates, when you push a new function to production, you must first validate it before deploying it to the public running application instance.

  • Release at the granularity of the test: If two parts of a system must be tested together, they should be released together so that you know that the parts of your system are compatible. Release automation tools are good at coordinating this kind of delivery. Alternatively, fully decouple.
Continuous pipeline/framework

To take advantage of the benefits of continuous delivery, you need other elements of the continuous framework, such as continuous exploration, continuous integration, continuous deployment and release on demand.

When you use continuous delivery pipeline stages, you should divide them into separate jobs, which are execution units within a stage:

  • Build jobs: Compile your project in the build job to prepare for deployment, where you generate artifacts that you can send to a build archive directory.

  • Deploy jobs: Upload your project to your continuous delivery pipeline as an app that you can access from a URL. After you deploy your project, you view it on your dashboard.

  • Test jobs: Customize and include test jobs before or after your build and deploy jobs based on your suite of unit tests or functional tests with third-party test services.

The continuous delivery pipeline can help development teams:

  • Automate builds, unit tests and deployment.

  • Edit and push code by using Git repositories, issue tracking and your web-based IDE (integrated development environment).

  • Create an integrated DevOps toolbox to build, deploy and manage your apps with your services, open source tools and third-party tools.

  • Edit your code from anywhere you choose to use your IDE to create, edit, run, debug and complete source control tasks.

  • Use your automated pipeline to continuously deliver builds, tests and deployments in a repeatable manner.

  • Improve quality by understanding your build status, security scan results, code coverage and test coverage so that you can evaluate whether to promote your app to the next environment (through policy gates to automatically ensure quality before promotion).
Continuous deployment versus continuous delivery

Continuous deployment can be part of a continuous delivery pipeline. Specifically, continuous delivery is the automated movement of code through the development lifecycle, sometimes called the delivery lifecycle. Continuous deployment is the automated movement of that code into production, once it passes the required automated tests.

Whether you make continuous deployment part of your delivery pipeline depends on your business needs. If the business needs the delivery team to release new or updated software out to production repeatedly, reliably, or as quickly as possible, or if the solution has multiple dependencies, then it is likely you will benefit from continuous deployment.

For more information about the differences between continuous deployment and continuous delivery, see this video:

Continuous delivery tools

A continuous delivery tool enables you to use open source tools to build, deploy and manage your applications. By integrating sets of tools, you can create repeatable and manageable tasks, not only for your development team but also for your operations team.

Your toolbox can include your current cloud services, open source tools and third-party tools, but you’ll also want to consider a continuous delivery tool that includes:

  • Repeatable templates for build and deployment automation. If it works for one of your apps, it should work for others. Don’t let every team struggle with configuration themselves.

  • A pipeline so you can automatically build when pushing changes, deploy to your cloud, incorporate builds and deployments into your toolchains, and manage deployments across your toolchain.

  • Tools for team collaboration, planning, source-code management and testing.

  • Instrumentation that exposes where your team is moving quickly and where things bog down, providing a guide to becoming “more continuous”.

Open source continuous delivery tools you can use for a strong continuous delivery pipeline include Jenkins, Concourse CI, Spinnaker, Travis CI, GoCD and GitLab CI.

Agile and DevOps

Agile continuous delivery

Previously, you would only release software once and then update it. You would then only consult customers at the beginning and the end to see if the software met their needs.

Agile is a way of producing software in short iterations on a continuous delivery schedule. Today’s agile continuous delivery process means you can release code to the customer as each defined feature becomes available. Agile development and continuous delivery are your keys to getting features to the customer as soon as production-ready. Your goal is to have each feature ready for release as it exits the pipeline.

DevOps and continuous delivery

In the last couple of decades, software development has undergone significant changes as it's moved from the standard waterfall concept to the more efficient agile methodology. To adapt, you need to shift to an approach focused on agile, DevOps and continuous delivery. As part of a continuous delivery pipeline, these focused processes enable more reliable, high-quality software releases and updates.

As you make more rapid, smaller software releases through agile development, your focus will become tighter on the individual stages of software development. At the same time, DevOps keeps your mind focused on the “Bigger Picture” and cultural change. This approach merges development and operations merge closely into one team. This team works on the entire software development lifecycle, from coding to testing to deployment to support.

For a closer look at DevOps, watch the video:

Related solutions
IBM Cloud® Continuous Delivery

IBM Continuous Delivery is a cloud service that helps provision toolchains, automate builds and tests, and control quality with analytics.

Explore IBM Cloud® Continuous Delivery
IBM UrbanCode®

The IBM UrbanCode family of software products helps you deliver software to market faster by accelerating application delivery and reducing manual processes.

Explore IBM UrbanCode®
Tekton on IBM Cloud®

Create Kubernetes-native CI/CD pipelines with maximum speed and flexibility.

Explore Tekton on IBM Cloud
Resources What is DevOps?

DevOps speeds delivery of higher quality software by combining and automating the work of software development and IT operations teams.

What is continuous integration?

Continuous integration is an iterative development process in which developers integrate new code into the code base at least once a day.

What are CI/CD and the CI/CD pipeline?

A practical guide to the continuous integration/continuous delivery (CI/CD) pipeline.

Take the next step

Are you ready for DevOps? To deliver software and services at the speed the market demands, teams have to iterate and experiment rapidly, deploy new versions frequently, and be driven by feedback and data. The most successful cloud development teams adopt modern DevOps culture and practices, embrace cloud-native architectures and assemble toolchains from best-in-class tools to unleash their productivity.

Explore DevOps solutions Try for free