semantic-release / gitlab

:fox_face: semantic-release plugin to publish a GitLab release
MIT License
278 stars 77 forks source link

chore: bump minimum Node version to 20.8.1 #647

Closed fgreinacher closed 9 months ago

fgreinacher commented 9 months ago

This bumps the minimum supported Node version to 20.8.1. Node 20 is the new LTS version and some of our dependencies already dropped supported for Node 18. Check out our Node Support Policy for how we handle Node versions.

BREAKING CHANGE: Node 18 and 19 are not supported anymore. Users have to upgrade to Node 20.8.1 or later.

fgreinacher commented 9 months ago

@gr2m @travi You might have a better overview than me here. Have you ever seen issues like the one below? If not I'll start investigating.

  publish › Publish a release (with an link) with variables

  Error: Promise returned by test never resolved

  Error: Promise returned by test never resolved
      at Test.finishDueToInactivity (file:///home/runner/work/gitlab/gitlab/node_modules/ava/lib/test.js:587:9)
      at Runner.beforeExitHandler (file:///home/runner/work/gitlab/gitlab/node_modules/ava/lib/runner.js:241:13)
      at process.emit (node:events:514:28)
travi commented 9 months ago

Have you ever seen issues like the one below?

only when the code under test is missing an await when needed. since you arent changing any tests with this, i assume it has to be something related to the node versions now being tested against.

i've run into some situations related to changes with node:fs, like https://github.com/tschaub/mock-fs/issues/380. i wonder if tempy maybe has any similar situations. with that particular change, could try before and after node v20.8 to see if there are any differences in the success or failure.

fgreinacher commented 9 months ago

I debugged this a bit. All failures occur because the POST request to upload the files does not resolve:

https://github.com/semantic-release/gitlab/blob/master/lib/publish.js#L127

I noticed that our FormData library (https://www.npmjs.com/package/form-data) is a quite dated and have played around a bit with other libraries (https://www.npmjs.com/package/formdata-node and https://www.npmjs.com/package/formdata-polyfill), but then ran into other issues.

Update: I could actually make it work with https://www.npmjs.com/package/formdata-node and some slight adaptation to our code.

fgreinacher commented 9 months ago

Thanks for the feedback @travi, I'll go ahead merge this now 🚀

github-actions[bot] commented 9 months ago

:tada: This PR is included in version 13.0.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket: