Repository navigation
Fail the release workflow when npm stage publish fails - #19
Merged
Merged
Conversation
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.
The Release workflow's staging step piped
npm stage publishintoteeunder GitHub's defaultbash -e, which has nopipefail, so a failed publish still passed the step. This setspipefailon that step, as the workflow's other multi-line steps already do.What happened
The v1.3.1 Release workflow ran twice. The second run (38112041476) got
E409 Conflict ... Cannot stage previously published version "1.3.1"from npm, but finished green, and its "Next steps" summary said the version was staged. Nothing was changed on npm: the first run's stage was the only one, and it was the one approved.With this change, a failed
npm stage publishfails the step, and the "Next steps" summary is skipped because it only runs after the earlier steps succeed.Other piped commands
Every other piped command in
release.ymlalready runs underset -euo pipefail. Every step inverify-release.ymleither setsshell: bash, which GitHub runs with-eo pipefail, or setspipefailitself.ci.ymlhas no piped commands.Verification
bash -ewith a failing command in place of npm: the old form exits 0 and the new form exits 1. With a succeeding command, the new form exits 0.release.ymlparses as valid YAML, and the parsed step script starts withset -euo pipefail.