FlexDeploy has long had support for managing the build and deployment life-cycle of a diverse set of technologies across the environments in your topology. As companies have introduced DevOps, or matured in their adoption, the need for managing collections of these deployments at a macro level has come to the forefront. Software changes are often delivered by way of releases, where one or more components are bundled together and delivered to the end user as a collection of features or capabilities. Releases may be delivered quarterly, monthly, weekly, or on-demand (as continuous delivery adoption gains momentum).
Typically, these software changes are promoted across a series of environments, before ultimately being delivered to the production environment where they are consumed by the customer. This software delivery life-cycle generally requires approvals, resolution of conflicts within shared environments, and utilizes testing quality metrics to determine when the changes are ready to be promoted into the next environment. The planning, collaboration, and execution of these activities, while required, often slow down delivery rates and add significant cost to IT projects.
Introducing FlexDeploy 4.5 with Advanced Pipeline & Release Management!
FlexDeploy 4.5 extends upon the core capability of building and deploying individual projects, to organizing macro-level changes into releases, and orchestrating a streamlined software delivery process using pipelines. This approach enables rapid change, while ensuring the proper controls are in place.
FlexDeploy helps facilitate rapid change using four key components:
- Release – a software delivery milestone, containing a collection of related or unrelated projects enabling new or updated features/capabilities.
- Release Snapshot – build versions (project versions) of the release’s projects which are sent through the pipeline.
- Pipeline – a workflow which orchestrates the delivery of snapshots across pipeline stages.
- Pipeline Stage – an environment within a pipeline which contains gates (optional) and steps.
When a snapshot (versioned project builds) is created it is sent to the pipeline for execution.
A pipeline defines a set of stages (also known as environments), which contain a series of gates and steps. Each gate blocks entry into the steps until some condition is satisfied (e.g. an approval, schedule, or test results meeting some quality metric). The steps define the implementation of delivering the snapshot into the stage. After a stage successfully completes execution, it is sent to the next stage and begins executing its defined gates.
A snapshot is a collection of build versions (project versions) for the release’s projects which are sent through the pipeline. As a release progresses, newer versions of projects are assembled to create new snapshots. A release may consist of dozens, or even hundreds or thousands, of snapshots over its lifetime, depending on its size and duration. There are several ways in which snapshots can be created.
- By a release manager by explicitly identifying the versions of the projects/packages in the release.
- By associating a project/package build to the release. As such, once the build completes, the new project version is overlaid on top of the most recent release snapshot to produce a new snapshot.
- Using a Continuous Integration trigger (Poll SCM Trigger or Scheduled Build Trigger) to automatically associate the new build with the release.
- Using the REST API to submit a build request, and associate it to the release.
A pipeline is a workflow which orchestrates the delivery of snapshots across the stages/environments. While a deploy workflow defines the implementation for the delivery of a single build artifact into an environment, the pipeline operates at a higher level, and orchestrates the propagation of many deployments across many stages/environments. The pipeline includes facilities for approvals, manual tasks, scheduling, deployments, and much more.
A sample pipeline definition with three stages:
The pipeline above has three stages, Development, QA, and Production. The Development stage does not have any gates, which means the steps begin execution immediately. The “Deploy All Projects” step deploys all of the project versions in a snapshot into the Development environment, which utilizes the deploy workflows of the underlying projects to facilitate this work. The QA stage has three gates. The “Dev Quality Check” gate verifies that tests for the projects in the snapshot in Development meet the configured qualifier metrics. If the qualifier metrics did not pass then the gate fails, otherwise, the gate completes and it transitions to the next gate. The “QA Manager Approval” gate creates an approval task for the QA Manager group and blocks execution until approved. Once approved, the “Every Day at Noon” scheduled gate blocks execution until 12pm. When the schedule is reached, the “Deploy All Projects” step for QA is executed. When the deployment is complete, the pipeline execution transitions to the Production stage and executes its gates and steps (similar to QA).
In a typical release, most of the snapshots will not make it very far through the pipeline. The approval gates are either rejected, or the snapshot is simply “out dated” by a newer one. Depending on the size and complexity of a release, there may be dozens or even hundreds of iterations in the lower stages before the first snapshot is promoted to the later stages. In fact, it is possible that only one snapshot for the release ultimately makes its way all the way to production. At such time, the release may be ended, and a new one is created. However, if desired, the same release can be used to deliver additional fixes or updates.
The release dashboard provides an interactive “cockpit” for managing pipeline executions and viewing the current state of the release snapshots across the environments. Users with the appropriate permissions can track executions through the pipeline, approve tasks, replay executions, and much more.
FlexDeploy offers an enterprise platform for managing your diverse set of technologies across the entire software delivery life-cycle, enabling rapid delivery and reduced IT cost. The Advanced Pipleline & Release Management features enable the bundling of projects/components into releases, and orchestrating the delivery of changes across the entire pipeline.