A green CI run is not a deploy

A green check on a pipeline means every step that ran, succeeded. It does not mean the steps you cared about ran at all.

Share
A green CI run is not a deploy

A green check on a pipeline means every step that ran, succeeded. It does not mean the steps you cared about ran at all.

How a deploy quietly stops deploying

Ours was one line:

- name: Deploy to production
  if: github.event_name == 'push'

Everything else about the workflow was correct. Scheduled runs checked out the repository, installed dependencies, built the site with fresh content, resolved cloud credentials — and then skipped the upload, because the event was schedule rather than push.

The run went green. The build log listed the new content by name. The only thing that disagreed was the object in the bucket.

A skipped step is not a failure

This is the part worth internalising. CI treats a step skipped by a condition as a non-event. Nothing in the summary distinguishes "deployed" from "decided not to deploy", so the signal you are watching cannot tell you which happened.

Check the artifact

The fix for the workflow was trivial. The fix for the process is a habit: verify the thing that was supposed to change, not the status of the job that was supposed to change it.

aws s3 cp s3://my-bucket/index.html - | grep -c "the thing I just added"

One command, run against the deployed artifact rather than the pipeline. It is the only check that would have caught this, and it caught it.