fix(ci): gate publish on the release commit actually landing - #5
Merged
Conversation
The committed output was repointed at the dirty-tree check, so a failed ghcommit step still read as true and let publish and the released Slack notice run for a release that never happened.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #4. When the version bump moved to
ghcommit-action, the job'scommittedoutput was repointed at the new pre-commit dirty-tree check, so it now means "there was something to commit" rather than "the commit landed".That matters because
publishis gatedif: always() && needs.version-bump.outputs.committed == 'true'. If the ghcommit step fails,committedis stilltrue, so publish runs anyway. It no-ops thanks tocheck-package-version, but it succeeds — andnotify-releasedthen posts a "released successfully" message for a release that never happened.Changes
committedoutput atsteps.commit-version-bump.outputs.commit-hash != '', which is only non-empty whenghcommit-actionactually created the commitThe dirty-tree check step stays as the
if:guard on the commit step itself, which is what it is for.Testing
Not run end to end (the release job sits behind an approval gate).
ghcommit-actionwritescommit-hashonly on the success path — it exits 0 without setting any output when it detects no changes, and the step fails outright if the mutation is rejected. So an emptycommit-hashcovers both "nothing committed" and "commit failed", which is exactly the condition publish should gate on.