DevOps

A CI/CD release checklist your next engineer can use

Build a delivery workflow around traceable artifacts, scoped credentials, approvals and recovery evidence.

A pipeline that finishes successfully has proved that its commands completed. The delivery team still needs to know what was deployed, which checks ran and what to do if the change causes a problem. For an MSP, that evidence also makes the handover easier: the receiving team should not need the pipeline author’s memory to operate it.

Start with a release record

For each release, capture the source commit, artifact identifier, destination environment, approving person and validation result. Link the record to the change request or pull request so a reviewer can follow the decision from code to deployment.

Build the artifact once and promote that same artifact through environments. Rebuilding from the same branch later can introduce different dependencies or inputs. An immutable identifier, such as a container digest, makes the intended release explicit. Keep environment configuration separate and version the configuration change alongside the release decision.

Give deployment jobs a narrow identity

A build job usually needs different permissions from a production deployment. Separate those identities and restrict production credentials to the jobs that actually use them.

Where the platform supports it, federated identity avoids keeping a long-lived cloud credential in the pipeline. With GitHub Actions, OpenID Connect lets a cloud provider issue credentials based on a workflow identity. The cloud trust policy still matters: constrain the repository, branch or environment instead of trusting every workflow from an organization.

Put approval at the production boundary

Make the production environment explicit. Record who can approve, which branches may deploy and what happens if approval does not arrive. GitHub’s deployment environments provide controls for this, although availability varies by plan and repository visibility. Apply equivalent controls in your chosen CI/CD platform.

An approval should refer to a known artifact and a visible set of checks. Requiring someone to approve a job with an ambiguous target or an unreadable log creates ceremony without a useful decision.

Validate the service after deployment

A running container is only one signal. Choose a small set of checks that reflect the service’s purpose: an authenticated request, a representative background job, a dependency connection or a critical user journey. Define an observation window and the conditions that stop further promotion.

Keep checks bounded. A failed check should produce a clear result and an escalation path, rather than retrying indefinitely while the deployment appears to be in progress.

Rehearse recovery before handover

Restoring a previous application artifact may not reverse a database migration or configuration change. Describe those dependencies explicitly. Test recovery in an agreed environment and record the steps, required access and expected result.

A useful handover checklist is:

  • The receiving team can identify the artifact currently deployed.
  • Production permissions and approval owners are documented.
  • Post-deployment checks have clear pass and fail conditions.
  • Recovery has been exercised for the changes in scope.
  • Logs and release records are accessible to the operating team.

Use this checklist as a starting point for a scoped project. The release gates should reflect the application’s failure modes and your client’s operating process.

Explore CI/CD and GitOps services.