Unlimited Design & Technology

Release Engineering

Safer Software Releases: Why Staging Still Matters

Automation can deploy the wrong change consistently. Use staging, clear release evidence, and an explicit decision before production.

UDT InsightsApr 18, 2018
An engineer rehearses a release on a test platform before the next step.

UDT Insights

From UDT’s knowledge archive: CI/CD training notes, May 2024. Newly edited for publication.

A green pipeline is evidence, not permission

A release can pass its automated checks and still fail a real workflow. The checks may miss an integration, a configuration difference, or an unexpected user action. Ask what the pipeline actually checked before treating a green result as readiness.

This article proposes a release review for customer and engineering teams. It builds on CI/CD training concepts and adds practical recommendations for staging, release approval, and recovery.

Give staging a clear job

Jenkins describes a delivery pipeline as a repeatable process that moves a build through testing and deployment stages.[2] The process needs meaningful checks, not just a sequence of automated commands.

Use staging as a place to examine the release candidate before real users depend on it. Exercise important workflows and integrations. Agree which conditions must resemble production and document the differences that remain.

Do not call staging an exact copy unless you can verify that claim. Different data, external services, or configuration can change behavior. Passing staging reduces uncertainty in the tested conditions. It does not prove that production will behave identically.

Use a release checklist that supports a decision

Assign an owner to each check. Keep the evidence attached to the release candidate rather than relying on a meeting summary.

  • Candidate: identify the version and packaged build that the team intends to release.
  • Traceability: record the source change, build result, and checks associated with that candidate.
  • Staging: exercise the main workflow, integration boundaries, and relevant failure cases.
  • Differences: document material environment differences and decide how to check the remaining risks.
  • Decision: record known limitations, approval responsibility, and conditions that require postponement.
  • Recovery and verification: agree who can stop the release, restore service, and check production afterward.

A hypothetical example: a confirmation message

This example is hypothetical, not a UDT delivery history. A team changes the confirmation message for a service appointment.

The build and automated tests pass. On staging, the reviewer follows the complete booking workflow and finds that the confirmation still shows the previous appointment time. An integration path was outside the existing checks.

The team holds the release, records the failed scenario, and adds a relevant test. After correction, the team checks a newly identified candidate. It does not reuse the previous approval for different software.

The release owner then reviews the remaining differences and authorizes production deployment. Afterward, the team performs the agreed production checks. If those checks fail, the owner follows the recovery plan instead of assuming deployment success means service success.

A four-step release flow

Make the transition between technical evidence and human responsibility explicit.

A four-step release flow
  • Build: produce and identify a traceable release candidate.
  • Rehearse: check workflows and differences on staging.
  • Authorize: review evidence, limitations, and recovery readiness.
  • Verify: release, check production, and record the result.

Start with the workflow that matters most

Choose a workflow that a customer or operator can recognize. Define its expected result, failure behavior, and release evidence together. This gives staging a purpose that a technical status alone cannot provide.

Keep the process proportionate to the change. A small release still needs an identified version and accountable decision. A complex release needs deeper checks. Neither requires unsupported promises that automation removes every release risk.

References

Discuss your next project

Talk with UDT about your needs and the next practical step.

Contact UDT
Zalo