CI/CD stands for continuous integration and continuous delivery or continuous deployment. A CI/CD pipeline is an automated process for software delivery that combines the development, testing, and delivery processes into one, seamless system. CI/CD improves product quality, release frequency, and release predictability. CI is the method that merges code changes back to the main branch as quickly as possible. CD supports the release of new changes to your customers quickly. This means automating your testing and release process. CD is also the method that automatically releases every change that passes all stages of your production pipeline to your customers. Therefore, continuous integration is the first step for both continuous delivery and continuous deployment.

In an ideal CI/CD pipeline, an automated process can build, package, and test code every time a developer checks in code changes, which allows for flexibility and agility in software development. The goal of implementing a CI/CD pipeline is to build and test software frequently and to continuously deploy to an environment. When you implement a CI/CD pipeline, you benefit by reducing risk during deployment, having a system of continuous feedback, improving code coverage, increasing quality, and improving productivity.

There are four core phases of a CI/CD pipeline:

  1. The build phase, where the source code is built, statically analyzed, and unit tested
  2. The package phase, where the code is packaged into a working component and pushed to an artifact repository
  3. The test phase, where the artifact is tested to ensure that it functions correctly, including functional and integration tests
  4. The deploy phase, where the artifact is made available for delivery
After deployment, a CI/CD pipeline circles back to the build phase as you continue to work on the code. The cycle of a CI/CD pipeline can continue perpetually, continuously integrating new code, and delivering and deploying updated software.

OpenEdge is designed to fit into many automation solutions. OpenEdge 12 includes a set of tools and solutions that help you move the development of your ABL applications into a CI/CD pipeline. This guide describes the recommended CI/CD options for OpenEdge, to help you automate your development and deployment across all stages of a CI/CD pipeline.

The OpenEdge features that facilitate an automated pipeline are:

Modernize your OpenEdge application

Working with your codebase to facilitate automation and CI/CD is a key component of creating a modern devops process for software applications. Consider updating several components of your application, to smoothly implement your automation strategy. For more information about best practices and recommendations for how to modernize your OpenEdge application, see Modernize Progress OpenEdge Applications.

Feedback loops

Feedback loops are an integral part of automation and CI/CD. Your CI/CD pipeline does not end at deployment; it iterates through the pipeline as long as you are developing software. Engaging in feedback loops provides you with many opportunities to adjust your software and code to meet evolving customer needs. This is why automation is key when you adopt a CI/CD pipeline. As more phases of the pipeline are automated, the faster you can complete an entire cycle. Eventually, you may have a CI/CD pipeline process that completes with only one input from building through deployment.

Quality gates

Quality gates are thresholds that software needs to reach in order to move along a CI/CD pipeline. One example of a quality gate is the percentage of tests that must pass in order to move to the next stage. This quality gate could be configured to automatically fail an application that has less than a 90% pass rate for all tests. Failing the pass rate stops the application during the test phase, and causes the application to be sent back to the build phase. Quality gates and testing phases can be set up at all stages of a CI/CD pipeline.

Infrastructure as Code

Infrastructure as Code is a conceptual framework for managing the data infrastructure as though it were a codebase. Infrastructure as Code is a key part of CI/CD because it allows the infrastructure that surrounds software development to be automated, enabling the entire CI/CD process. Automating the infrastructure increases the speed and agility of development, increases efficiency with defined processes, and mitigates human error, thus reducing risk.