LAB
DevelopmentLAB

Before Automating Deployment: Define Approval Gates, Secrets and Evidence

Published:

6 min read

Deployment automation is valuable when releases become repeatable and reviewable, not when a risky button simply becomes an unattended job. Before commissioning CI/CD, agree which artifact will be deployed, which checks stop it, who can approve production, and what happens when a stage fails or an approver is unavailable. Pipeline speed matters, but authority and evidence matter more to acceptance.

There is no universal gate list. An internal reporting tool differs from a customer-facing transaction system. Translate the actual risks into specific controls rather than accumulating approvals that encourage people to find a side route. Every gate needs a reason, an owner and enough information for that owner to decide.

Map the release path before selecting the tool

Start with a versioned change, then describe build, checks, staging, approval, production deployment and post-release verification. State the inputs and outputs at each transition. If production is rebuilt after staging approval, explain how the approved and deployed outputs are matched, or how necessary environment differences are recorded.

Version-controlled configuration and release gates fit within Infrastructure as Code & CI/CD. The journeys and checks that feed the pipeline belong with Software Quality Assurance. Keeping those responsibilities explicit avoids assuming that a functioning pipeline automatically contains adequate tests.

Stage Expected evidence What blocks progression?
Build Artifact tied to a known change Failed build or uncertain artifact identity
Checks Results tied to that artifact Failure of an agreed mandatory check
Staging Evidence for specified journeys A defect blocking an essential journey
Production approval Authorized person and recorded decision Missing or expired approval
Post-deployment Bounded functional and operating checks A condition requiring containment or recovery

Inspect real permissions, not environment labels

An environment named “production” is not proof of protection. Identify who can edit the workflow, change protection settings, deploy, and extend the execution identity's permissions. An approval written in a conversation offers little control if another automated path can deploy without consulting it.

GitHub documents environment protection rules that can require approval, with availability varying by plan and repository type. It also describes withholding environment secrets from a job until required approval is granted. Check the actual account and configuration before promising a design that depends on unavailable features. GitHub deployment and environment documentation.

Request an inventory of secrets, owners and purposes without the secret values. A handover document should not require a production password pasted into it. Describe how an execution identity receives and loses access and how sensitive values are kept out of logs. Replacing a staff member should not require sharing that person's account to keep releases working.

Hypothetical example: a service with three environments

Consider an internal maintenance-request service with test, staging and production environments. Initially, a developer deploys from a laptop and manually records a release number. The proposed pipeline starts from an approved change, produces an identifiable artifact, runs checks and deploys to staging. This is an illustrative scenario, not a client case study.

The production gate shows a change summary, evidence that request creation works, data-change implications and the agreed recovery option. A named release owner approves that specific version. During acceptance, the team intentionally makes the journey check fail in the safe test setup. Progression must stop while the previous production version remains unchanged.

After a correction, a new artifact receives its own evidence. Approval for the earlier artifact must not silently transfer. The team also checks approver absence, a deployment attempted from a disallowed branch, and configuration changes after approval. If approval evidence cannot be retrieved, the proposed behavior is to stop, not interpret uncertainty as permission.

The example does not prescribe a particular platform. It defines observable behavior that the buyer can witness before accepting the workflow.

Define emergency exceptions without making them routine

A business may need an emergency route. Give it an explicit definition, authorized owner, record and subsequent review. A configuration that lets any administrator bypass everything without an accountable trail should not be described as a controlled approval process.

Equally, do not promise that all exceptions can disappear. The owner must decide the authority limits and circumstances under which an exception may be used. Implementers should not make that commercial and operational decision implicitly through convenient defaults.

Where environments, network boundaries or execution identities are unclear, a focused Cloud Architecture Design & Review scope may be needed. If the application must change to build or test consistently, show that dependency under App Development, rather than concealing it inside “tool configuration.”

Accept demonstrations of prevention as well as success

Request a documented successful release and safe, intentional rejection cases. The owner should be able to trace a version from repository to environment, identify its approver and inspect supporting evidence without receiving execution secrets.

Acceptance should exercise removal of a former user's access, failure of a required check, an unavailable approver and an interrupted stage. A healthy demonstration on the happy path does not establish those boundaries. Record which tests could not be performed and why.

Handover should include reviewable configurations, external dependencies and charges where applicable, ownership of test maintenance and agreed recovery steps. Technical deployment success does not establish that persistent-data changes can be reversed. Releases involving such changes need a separate recovery design. Pipeline automation also should not imply managed operations or permanent human monitoring after handover.

Frequently asked questions

Must every deployment have manual approval?

That depends on risk and explicit delegation. Low-impact transitions may be automated, but exceptions or broader authority require the owner's decision, not an implementer's convenience.

Do we need to change repository platforms?

Not automatically. Check the present plan's capabilities and limitations first. Consider migration effort and operating complexity only if it cannot support the required controls.

Does a passing check mean the release is ready?

It establishes that the specified checks passed. Show what they do not cover and which changes still need a person or a different form of testing.

What is a sensible first scope?

Choose one application and one release path. Provide current deployment steps and approval roles without secrets. That is enough to design an acceptance demonstration covering both permitted and prevented deployment.

Reference

GitHub: deployments and environments, reviewed 26 October 2026. Available features must be checked again against the implementation account.

DevelopmentLAB

Need help with this?

Explore LAB's Infrastructure as Code & CI/CD service.