Skip to content

Is AppVeyor still used to test against Windows, can it be moved to CircleCI, and/or can we update it to use a modern/supported version of Node? #24891

Closed
@0xdevalias

Description

tl;dr

  • Is AppVeyor still used to test against Windows?
  • Can it be moved to CircleCI?
  • If not, can we update to use a modern version of node for it?

DeepDive into context and specifics

Currently the main CI testing seems to be done on CircleCI:

Yet there is also an AppVeyor config that appears to be used for testing against Windows:

Looking at the git history for appveyor.yml:

AppVeyor appears to have been added to run against the master (now main) branch in:

It was updated to use NodeJS 10.x in:

There was an attempt to move the Windows build from AppVeyor to CircleCI in #17984, but that was reverted in #18302 due to it slowing down the CI time:

It was updated to run on the main branch when it was renamed from master:


I stumbled across a few links to a publicly accessible AppVeyor project, but looking at the build output from that, it doesn't look like it's been built against for ~2 years:

I realise that there might be a different/non-public AppVeyor project that it is being built against now though.


If it's AppVeyor is still in use, and it's still not possible to migrate the Windows builds to CircleCI, it would be good to upgrade to a modern version of node:

Looking at .circleci/config.yml, the jobs seem to run on the cimg/openjdk:17.0.0-node docker container:

Looking at .codesandbox/ci.json, it appears to use node 14.x.

Looking at .nvmrc, it appears to use node 4.17.6:

Looking at package.json, devEngines is set to "node": "^12.17.0 || 13.x || 14.x || 15.x || 16.x || 17.x"

AppVeyor's Windows images include the following versions of node by default:

  • https://www.appveyor.com/docs/windows-images-software/#node-js
    • 8.x is default Node.js installed on build workers
    • Node.js 16.8.0 (x86 and x64) - use Current alias for latest 16.x release
    • Node.js 15.0.0 - 15.14.0 (x86 and x64)
    • Node.js 14.17.6 (x86 and x64) - default on VS 2019 image. Use LTS alias for latest 14.x release
    • etc

So I think that either we should upgrade both AppVeyor and CircleCI to use a 16.x version of node, or at the very least, should upgrade AppVeyor to use the 14.x version (i'm unsure if there is any official list of node versions that React is intended to support being built on, but if so, then should probably test against all of those versions)

While this may not be too important currently (as presumably all of the build tools work at the moment), it will likely become more of an issue as time goes on, and the build tooling is upgraded to versions that will require newer versions of the node runtime:

eg. An improvement that would allow generating source maps for React would ideally be able to use a version of the magic-string library (which is used by a number of the Rollup plugins) that supports s.replace, but this version requires Node 12.x or higher, which currently would presumably break on AppVeyor as it uses node 10.x:


I found some previous PR's that attempted to make some of these sorts of changes, but they never seemed to land for various reasons:

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions