Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Default Node.JS will be switched to 14.x on all platforms #1953

Closed
7 tasks done
maxim-lobanov opened this issue Nov 2, 2020 · 6 comments
Closed
7 tasks done

Default Node.JS will be switched to 14.x on all platforms #1953

maxim-lobanov opened this issue Nov 2, 2020 · 6 comments

Comments

@maxim-lobanov
Copy link
Contributor

Breaking changes
Default version of Node.JS on images will be updated from 12.x to 14.x

Target date
For Windows, Ubuntu images, rollout of this change will start on 2 November 2020 and will take 3-4 days
For MacOS images, rollout will start on 9 November.

The motivation for the changes
On images, we always install LTS version of Node.JS by default.
On 2020-10-27, Node.JS 14 has become LTS version. On 2020-11-30, Node.JS 12 will be switched to Maintenance mode.

Possible impact
If you rely on default Node.JS version and your project is not compatible to Node.JS 14, it might start to fail

Virtual environments affected

  • Ubuntu 16.04
  • Ubuntu 18.04
  • Ubuntu 20.04
  • macOS 10.15
  • macOS 11.0
  • Windows Server 2016 R2
  • Windows Server 2019

Mitigation ways
Please consider using Node.js Tool Installer task (for Azure DevOps) and setup-node (for GitHub Actions) to switch back to Node.JS 12. Switching will take less than a second. Node.JS 12 still will be available on images along with Node.JS 8, 10.

@thomasmichaelwallace
Copy link

thomasmichaelwallace commented Nov 5, 2020

It's a bit late now, but can I suggest the next time you bump the default node version it should be a breaking change mentioned on the blog?

Anyone with engine set would have seen all their builds suddenly break (like me 😃 ).

@maxim-lobanov
Copy link
Contributor Author

@thomasmichaelwallace , thank you for feedback. It definitely makes sense to have better communication here.

We don't recommend to rely on default versions of Node.JS on image. Actually, we pre-cache 4 versions of Node.JS on all images: 8.17.0, 10.22.1, 12.19.0, 14.14.0. They could be easily setup via Node.js Tool Installer task (for Azure DevOps) and setup-node (for GitHub Actions). Running those tasks take less than 1 second and won't increase build time but it will guarantee that you are not broken with sudden image update.

@maxim-lobanov
Copy link
Contributor Author

MacOS and Ubuntu 1604, Ubuntu 1804 with these changes were deployed previous week.
Ubuntu 2004 and Windows images are deploying this week

@asklar
Copy link
Contributor

asklar commented Nov 13, 2020

@maxim-lobanov @mohitkathuria This is the 2nd or 3rd time that an update to the windows-2019 image completely breaks our team (React Native for Windows). In the past I and others were told to look for breaking changes on the github blog or in pinned issues. However it is very difficult to find what things I care about breaking (e.g. changes that will affect the windows-2019 image).

I'm not sure if there is a way for someone to subscribe to labels on github, if so, it would be great if you tagged breaking changes in each of the main images (e.g. label:windows). Otherwise, is there an internal distribution list where these changes are mentioned? This is causing lots of disruption for me and my team, it's 2:30am and I'm having to fix breaks because of breaking changes that were not communicated.

@maxim-lobanov
Copy link
Contributor Author

Hello @asklar , I am sorry to hear that this change broke your builds and thank you for your feedback.
Could you please try to apply that mitigation way and confirm that it works for you?

Please consider using Node.js Tool Installer task (for Azure DevOps) and setup-node (for GitHub Actions) to switch back to Node.JS 12. Switching will take less than a second. Node.JS 12 still will be available on images along with Node.JS 8, 10.

We use approach to set latest LTS version as default for every tool on image.
If having latest LTS version of tool doesn't work for you, it is recommended to use official tasks to work with image. Those tasks just switch pre-installed versions of Node.JS and didn't take much time (less than second). Task will guarantee that you are not broken by any future changes because you don't depend on "default".

As for the tracking image updates, all announcements can be found by Announcements label in this repository but there is no way to subscribe it.
Also we include the table with announcements to image documentation and release description. I think we can subscribe to new releases.

ecampidoglio added a commit to cake-build/cake-action that referenced this issue Nov 16, 2020
GitHub has updated the version of Node.js in all hosted virtual environments
from 12.x to 14.x (actions/runner-images#1953).

With this change, a few tests that create empty files on disk
stopped working because the `writeFileSync` no longer accepts `Object`
as the data argument. The solution was to replace the empty object literal
with an empty string.
ecampidoglio added a commit to cake-build/cake-action that referenced this issue Nov 16, 2020
GitHub has updated the version of Node.js in all hosted virtual environments
from 12.x to 14.x (actions/runner-images#1953).

With this change, a few tests that create empty files on disk
stopped working because the `writeFileSync` no longer accepts `Object`
as the data argument. The solution was to replace the empty object literal
with an empty string.
ecampidoglio added a commit to cake-build/cake-action that referenced this issue Nov 16, 2020
GitHub has updated the version of Node.js in all hosted virtual environments
from 12.x to 14.x (actions/runner-images#1953).

With this change, a few tests that create empty files on disk
stopped working because `writeFileSync` no longer accepts `Object`
as the data argument. The solution was to replace the empty object literal
with an empty string.
@maxim-lobanov
Copy link
Contributor Author

Rollout of these changes have been finished.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants