In this tutorial we will look at the key concepts about Release capability of ElectricFlow and how that relates with other objects like Pipelines, Applications and environments.
Please look at ElectricFlow Deploy Concepts video and ElectricFlow Pipelines Concept video before this video.
Enterprise Releases – Multiple apps
Typically software is built by teams working on various artifacts. Continuous Integration pipelines per team produce one or many artifacts. Those build outputs, that is artifacts, either individually or as a group make up logical applications.
In most enterprises, multiple teams are working together to produce multiple such applications which in turn have multiple artifacts or components.
As life-cycle for each of these outputs progresses, typically these applications are bundled and released together periodically.
Before such multiple applications finally get deployed into the production, they will go through various stages such as integration stage, user acceptance stage, pre-production stage etc.
That said, releases can also be of the continuous delivery type where a developer check-in can go all the way from build to production if all the automated checks are met.
ElectricFlow Release can cater to both such scenarios.
When to use Release capability in ElectricFlow?
So when to use the Release capability in ElectricFlow, instead of just using the Pipelines
- Release capability is a great fit when you are deploying multiple applications in one or more environments. Release allows you control the dependencies between these application deployments.
- Release is also a good fit when your overall release process is similar but the payload, that is which applications to release, changes from release to release. In such a case instead of using just the pipelines with dedicated application deployment tasks, Release is a good fit.
- Think about Release if even for single application you want to plan the release start and end dates as Release brings planning aspects with it.
Release and interactions with other objects
Release object builds on top of other existing objects such as pipelines, applications and environments.
Release uses pipelines as a way to define and execute the release process.
Release also allows to define the bill of materials or the applications and their snapshots that need to be deployed together.
In addition release also requires all the environments or the environment templates to use to deploy applications to in each of the pipeline stage.
And as you would have noticed in the ElectricFlow Pipelines concepts video, Pipelines have various stages such as Integration testing, Pre-production, production etc. Each of these stages have gates and tasks.
Gates can be of entry gate or exit gate type where required approvals can be defined.
Tasks are automatic or manual activities that need to be done in each of the stage. Pipelines, thus are the backbone behind Release capability.
There is a special type of a pipeline task called Deployer task. This is the task that stitches together the Release Bill of material that is the applications and the environments to the Pipeline. Any pipeline that is used for a release needs to have a Deployer task in a stage.
When the release is started and the related pipeline is run, system will use the deployer task to bulk deploy all the applications defined as part of the release in the specified order. They will be deployed to the environments specified for each application per pipeline stage.
Hence using release and the deployer pipeline task, it is possible to create standard reusable pipelines where the broad process is similar but just which applications to deploy changes from release to release.
This tutorial provided an overview of the Release capability in ElectricFlow. To learn more, please visit learn.electric-cloud.com