release-please-action icon indicating copy to clipboard operation
release-please-action copied to clipboard

fix: undo breaking change in releases_created output

Open rowanmanning opened this issue 1 year ago • 3 comments

The issue this fixes

An undocumented breaking change slipped into the v4 release which causes the conditional in actions to stop working as documented. I encountered it when migrating some of my projects and an issue has already been opened (#912).

In v3 the following step would only run if releases were created. In v4 the action will always run:

- run: echo "releases happened"
  if: ${{ steps.release.outputs.releases_created }}

This is because the @actions/core npm package core.setOutput method always casts values to a string, so when we call the following:

core.setOutput('releases_created', releases.length > 0);

The output of the action will always either be "true" or "false" as a string. This is a problem because our if statement above will always evaluate this to true and run the conditional step.

The only reason this worked in v3 is because the core.setOutput was called only if releases.length was greater than zero rather than being passed the condition.

So in v3 the possible values for releases_created was actually "true" or undefined. This was never an issue because "true" is truthy and undefined is falsy so the conditions in our actions worked as expected.

Approach

I've moved the releases_created output back inside the conditional to switch the behaviour to match v3.

Alternatives

If you're not happy with this change then I think the documentation should be updated to highlight this gotcha and the changelog for v4 should include it.

Potential additional work

core.setOutput casting to a string has been noted in issues in the @actions/core repo before, but all the documentation on this action indicates that outputs are set to true or false. It might be worth changing this documentation to explain that the values are all strings rather than booleans.

rowanmanning avatar Dec 19 '23 21:12 rowanmanning