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
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.
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 馃槂 ).
@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.
MacOS and Ubuntu 1604, Ubuntu 1804 with these changes were deployed previous week.
Ubuntu 2004 and Windows images are deploying this week
@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.
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.
Rollout of these changes have been finished.
Most helpful comment
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
engineset would have seen all their builds suddenly break (like me 馃槂 ).