The Release Process
Deploying an application is more than just getting code onto a server; it's a lifecycle. To ensure stability, security, and quality, every change must follow a structured path from development to production. In Infrastream, this path is defined by a ReleaseTrack manifest.
This guide explains the concept of a release track, the benefits of this approach, and how it governs the deployment of your applications.
What is a ReleaseTrack?
A ReleaseTrack is a manifest that defines the complete, multi-stage deployment and promotion strategy for a set of applications. It is a blueprint for your CI/CD (Continuous Integration / Continuous Deployment) process, specifying the exact sequence of environments that your code must pass through before it reaches production.
You define a ReleaseTrack once for a collection of related services (grouped in an ApplicationSet), and the platform automatically enforces that every version of your code follows the prescribed path.
The Benefits of a Structured Release Process
In the "Getting Started" guide, you created a ReleaseTrack before you created your Application. This might seem like an extra step, but it is the foundation of a secure and reliable software delivery process.
By defining the release lifecycle in a separate manifest, we separate the "what" (the application code) from the "how" and "where" (the deployment process). This creates a clear division of responsibilities between different stakeholders.
The key benefits include:
- Safety and Security: A
ReleaseTrackensures that no version of an application can be deployed directly to a sensitive environment likeproduction. It must first be successfully deployed and validated in preceding environments (e.g.,development,staging). This "progressive rollout" is a critical security and stability guardrail. - Consistency and Repeatability: Every change, whether a new feature or a small bugfix, follows the exact same automated, auditable process. This eliminates the inconsistencies and human errors that plague manual deployment processes.
- Velocity with Confidence: Because the process is automated and has built-in safety checks, teams can release new versions more frequently and with greater confidence.
Stakeholders and Their Roles
The release process is designed to facilitate collaboration between different teams, each with a distinct role.
-
Development Teams (The "What")
- Who they are: The engineers building the applications.
- Their role: Their primary responsibility is to define the
Applicationmanifest. They own the application's source code, its container image, and its specific runtime requirements (e.g., what environment variables it needs). They do not need to worry about how the application gets to production, only that it is defined correctly.
-
Product or Release Managers (The "When")
- Who they are: The individuals responsible for the product roadmap and release schedule.
- Their role: They are the primary owners of the
ApplicationSetmanifest. They decide which applications belong together as a single, releaseable product. By managing theApplicationSet, they control which group of services will be promoted together along the release track.
-
Platform or SRE Team (The "Where" and "How")
- Who they are: The central team responsible for the stability and governance of the cloud platform.
- Their role: They are the owners of the
ReleaseTrackmanifest. They define the official, approved paths to production for the organization. By controlling thereleaseStages, they ensure that every application undergoes the required sequence of testing and validation, enforcing security and quality standards.
How It Works: From Application to ReleaseTrack
The relationship between these manifests is hierarchical and defines the entire release workflow.
- The
ApplicationManifest (What): This is the most granular piece. It represents a single, deployable service. It is defined by the development team and contains all the information about that specific service. - The
ApplicationSetManifest (The Grouping): MultipleApplicationmanifests are placed as children of anApplicationSet. This groups related services (e.g., the API, the web frontend, and a background worker for a single product) into a single, cohesive unit that should be released together. This is managed by the product owner. - The
ReleaseTrackManifest (The Path): TheApplicationSetis placed as a child of aReleaseTrack. This action subjects all applications within that set to the deployment lifecycle defined in theReleaseTrack, which is governed by the platform team.
This structure ensures that individual development teams have the autonomy to manage their specific services, while product owners control the release packaging, and the platform team guarantees that every release follows a safe and compliant process.
The Stages of a Release
A ReleaseTrack manifest defines up to three distinct paths, or "stages," for a release.
# Example ReleaseTrack manifest
apiVersion: lowops.manifests.v1
kind: ReleaseTrack
metadata:
name: my-product-releasetrack
# ... parent metadata
spec:
# Path for validating individual PRs
preReleaseStages:
- environments:
- development
# Path for full, versioned releases
releaseStages:
- environments:
- development
- environments:
- staging
- environments:
- production
# Accelerated path for emergency fixes
hotfixStages:
- environments:
- staging
- environments:
- production
1. Pre-Release Stages (preReleaseStages)
- Purpose: To validate the changes in a single developer's Pull Request (PR).
- How it works: When a developer opens a PR for a service, the platform automatically deploys only that service to the first environment in this list (e.g.,
development). It then runs integration tests to ensure the change works correctly with other services in that environment. The PR cannot be merged until these checks pass. This prevents broken code from ever entering the main branch.
2. Release Stages (releaseStages)
- Purpose: To promote a complete, versioned set of applications to production.
- How it works: After multiple PRs have been merged into the main branch, a release manager can trigger a "release." The platform bundles all the latest versions of the applications in the
ApplicationSetinto a single, versioned release package. This package is then promoted sequentially through each environment in thereleaseStageslist. A release cannot be promoted to the next stage (e.g., fromstagingtoproduction) until it has been successfully deployed and has passed all automated and manual quality gates in the current stage.
3. Hotfix Stages (hotfixStages)
- Purpose: To accelerate the deployment of a critical, emergency bugfix to production.
- How it works: In a production incident, you need a way to bypass the full release train. A hotfix follows an accelerated path. This track is typically much shorter (e.g., it might only require deployment to
stagingfor a final sanity check before going toproduction), allowing you to resolve critical issues in minutes, not hours.
By understanding and using the ReleaseTrack, you are leveraging a core component of the platform that is designed to make your releases safer, faster, and more reliable.
How Stakeholders are Bound to Release Stages
The ReleaseTrack manifest defines the path for a release, but it is the Infrastream Portal that enforces stakeholder approvals at each stage of that path.
While changes to application code and manifests are approved via the GitOps Pull Request workflow, the promotion of a release from one environment to the next (e.g., from staging to production) is a distinct action managed and audited within the Infrastream Portal.
Here’s how the roles and responsibilities map to this process:
-
preReleaseStages(e.g.,development)- Stakeholders: Development Team.
- Responsibility: Code correctness and quality.
- Mechanism: This stage is typically automated. When a developer merges a Pull Request, the CI/CD pipeline automatically deploys the new version to the
developmentenvironment and runs integration tests. This provides fast feedback to the development team.
-
releaseStages(e.g.,staging,production)- Stakeholders:
- QA/Test Engineers (for
staging) - Product Managers (for
production) - Security Team (for
production)
- QA/Test Engineers (for
- Responsibility:
- QA: To validate that the bundled release is stable and works as expected in a production-like environment.
- Product: To provide the final business approval to release new features to customers.
- Security: To perform a final check and ensure the release meets all security and compliance requirements.
- Mechanism: To promote a release from
stagingtoproduction, a Release Manager will initiate the promotion in the Infrastream Portal. The portal, aware of theReleaseTrack, will then enforce a mandatory sign-off from the designated stakeholders (QA, Product, Security). The deployment to the next stage will not proceed until all required electronic approvals have been recorded in the portal, creating a clear and auditable governance checkpoint.
- Stakeholders:
-
hotfixStages(e.g.,staging->production)- Stakeholders: SRE/Operations Team, Senior Leadership.
- Responsibility: Resolving a production incident quickly and safely.
- Mechanism: The promotion workflow in the Infrastream Portal for a hotfix is often configured with a different, accelerated set of approvers. It may require sign-off from a small, designated group of incident commanders to ensure the emergency fix is both necessary and safe to deploy without waiting for the full set of standard release approvals.
This combination of the ReleaseTrack manifest and the approval workflows in the Infrastream Portal creates a powerful, auditable, and secure release process where every stakeholder has a clearly defined role and responsibility.