Releases

Introduction

A release in Facets is a streamlined, process for deploying changes to a cloud environment. Releases are executed using Terraform apply commands, which perform a three-way comparison of state to determine and deploy the necessary changes to the corresponding cloud environment.

Any kind of changes in a running environment, be it a new Redis or a new application build happens through a Release.

Releases Execution

For any environment, Releases can be scheduled to run periodically, with an option to do Manual release anytime you need. Any changes (disk expansion, new build, changed alert definitions) during the period are accumulated and executed in the next scheduled or manual release.

Three-Way Comparison

Releases involve a three-way comparison that includes checking:

  1. Current state of the environment
  2. State defined in generated Terraform configuration files from blueprint
  3. Desired end state.

After comparison, the necessary changes to reach the desired state are deployed.

Types of Releases in Facets

The following are the various types of releases available in Facets:

  1. Full Release: The default release type, this is used for synchronizing all changes in an environment.
  2. Selective Release: This release type allows for selective deployment of services or changes, commonly used for out-of-turn hotfixes in environments.
  3. Plan Release: Provides a preview of all changes that will be made during the release, allowing for review and approval before applying changes.
  4. Custom Release: This release type allows power users to issue direct Terraform commands, giving them greater control and flexibility in their deployments.
  5. Queued Release: This feature allows the system to automatically add a new, manually triggered release to a queue while another release is already in progress. This allows you to initiate releases without the need to wait for the current one to complete.
  6. Launch Release: Used for launching a new environment for the first time.
  7. Destroy Release: Used to destroy all resources provisioned by Facets.
  8. Maintenance Release: Used execute Infrastructure as Code (IaC) upgrades.

In addition, Terraform logs are available for power users to view detailed information about the changes made during each release. By using releases in Facets, organisations can have a well-defined and automated process for deploying changes to their cloud environments, which helps reduce the risk of errors and makes it easier to roll back if necessary.


Release Statuses

StatusDefinition
SUCCEEDEDRelease completed successfully
FAILEDRelease encountered errors
IN_PROGRESSRelease is currently executing
QUEUEDRelease is waiting to execute
PENDING_APPROVALRelease requires approval before proceeding
ABORTEDRelease was manually stopped
REJECTEDRelease approval was denied
TIMED_OUTRelease exceeded execution time limit
STOPPEDRelease was terminated

Release Management Actions

Signing Off Deployments

Sign-off marks a release as approved for production deployment.

To sign off a release:

  1. Open the release from the Releases tab
  2. Review the changes and ensure the release succeeded
  3. Click Sign Off
  4. Confirm the action
🚧

Warning: Sign-off typically gates production deployments. Ensure the release has been thoroughly validated before signing off.

Attaching Labels to Releases

Categorize and filter releases by attaching labels.

To attach labels:

  1. Open the release
  2. Click Attach Labels
  3. Select labels from the available list
  4. Click Apply

Labels enable filtering and categorization in release searches.

Uploading Release Metadata

Upload custom metadata as JSON files for integration with external systems.

To upload metadata:

  1. Open the release
  2. Click Upload Metadata
  3. Select your JSON file
  4. Click Upload

The metadata is processed and stored in S3 for later retrieval.

📘

Release operations can be automated using the Release Agent.

  • Monitor release status and trigger notifications on failures
  • Auto-approve releases based on predefined criteria
  • Orchestrate multi-environment deployment workflows
  • Execute automated rollback on failure detection

Troubleshooting

ProblemSolution
Null release type error during deployment creationEnsure release type is specified. IllegalArgumentException is thrown when release type is null.
BadRequestException, ProdReleaseDisabled, or ReleasePausedExceptionCheck environment configuration and release permissions. These exceptions halt release creation.
Deployment ID not foundVerify the deployment exists. NotFoundException is thrown for invalid deployment IDs.
Log streaming timeoutConnection is automatically closed after timeout. Refresh to reconnect.
Log stream EOFIndicates log completion. This is normal for finished releases.
Helm rollback failureReview error logs. All Helm exceptions are wrapped in RuntimeException with original cause.

FAQs

1. What is a release in Facets?

Releases in Facets are a streamlined way of deploying changes to cloud environments. They are executed using Terraform apply commands and perform a three-way comparison of state to determine and deploy the necessary changes to the corresponding cloud environment.

2. What is a Full Release in Facets?

A Full Release in Facets is the default release type and is used for synchronizing all changes in an environment.

3. What is a Selective Release in Facets?

A Selective Release in Facets allows for selective deployment of services or changes, commonly used for out-of-turn hotfixes in production environments.

4. What happens to a scheduled release when there is a release already queued?

In such scenarios, the scheduled release gets skipped. It does not enter the queue or interrupt the current release process.