Writing · delivery
11 posts filed under delivery, newest first.
Same branch, same gates, two different triggers. The pipeline that builds these pages, and the day a pull request was allowed to overwrite what main had already verified.
A green deploy can leave a host on an old generation: scope comes from a single commit's diff, and an empty scope skips every deploy job while the run still reports success.
A secrets-only merge can produce no workflow run at all: the paths filter decides whether a run exists, the scope job decides which hosts it reaches.
An untested rollback does not fail loudly: a denied sudo reads as empty output, the script finds no previous generation, and the host stays broken.
Scope derived from a git diff must fail closed: a shallow checkout makes the diff fail, and reading that failure as no changes deploys nothing at all.
A green PR check describes the merge base it ran against, not the current main: Forgejo does not re-run PR workflows when the base branch advances.
One merge can produce more than one workflow run for one commit, and they queue instead of cancelling - so the latest green run may not have touched the host.
One job per runner daemon: a job that holds its slot while waiting on work that needs a slot deadlocks the queue - and the symptom is a hang, not a failure.
A token scoped to one repo answers 404 for another, the same as for a repo that does not exist. How a cross-repo step exits zero and changes nothing at all.
A masked value and a truncated read are renditions, not files. An edit built from one writes the rendition in: a placeholder, or a silent drop past the cutoff.