go-semantic-release/semantic-release

Exit Code 0 even if Hooks plugin failed

AndreasSko opened this issue ยท 2 comments

While developing a custom Hooks plugin I noticed that semantic-release will exit successfully, even if the Hooks plugin returned an error. I'm wondering if this is expected behavior or a bug. I think

herr := hooksExecutor.Success(&hooks.SuccessHookConfig{
Commits: commits,
PrevRelease: release,
NewRelease: &semrel.Release{
SHA: currentSha,
Version: newVer,
},
Changelog: changelogRes,
RepoInfo: repoInfo,
})
if herr != nil {
logger.Printf("there was an error executing the hooks plugins: %s", herr.Error())
}

is missing an exitIfError, which is the case for other plugin calls (like Init).

I'm happy to open a PR if this is something that is ok to be changed ๐Ÿ™‚

Hi @AndreasSko, the idea was that hooks plugins should never interrupt the release flow.
But I can see cases where this makes sense. We can put it behind a cli flag, so users have to explicitly enable it.

Update: I was also just working with a hooks plugin and if the success hook fails, semantic-release should definitely return a non-zero exit code. Thanks for raising this issue, it should be fixed with the next release. ๐Ÿ™

Thank you, @christophwitzko! Really appreciate it ๐Ÿ™‚