Skip to content

ci: drop the AppVeyor Node matrix - one Windows job, shallow clone - #1334

Merged
yagop merged 1 commit into
masterfrom
ci/appveyor-single-job
Jul 10, 2026
Merged

ci: drop the AppVeyor Node matrix - one Windows job, shallow clone#1334
yagop merged 1 commit into
masterfrom
ci/appveyor-single-job

Conversation

@yagop

@yagop yagop commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Why

AppVeyor was taking 4-10 minutes end-to-end on recent PRs (e.g. #1332) for ~65 seconds of actual work. Timing data from the AppVeyor API for the last 15 builds:

  • Queue wait: 1-6.5 min before the first job starts (free-tier shared queue - not fixable via config).
  • Run: ~190-240s, of which each matrix job is only ~60-65s. The free plan runs 1 concurrent job, so the Node 22 + 24 matrix ran sequentially, with a second ~65s VM provision between them.

Per-job breakdown (build 357): clone 8s, Install-Product node 10s, npm install 22s, typecheck 5s, unit tests 18s.

What

  • Drop the Node matrix, keep a single Node 24 job. This job exists for Windows coverage only; the Node version matrix (22/24/26) is already covered by GitHub Actions on Linux, where each job finishes in ~20s. Cuts the AppVeyor run from ~3.5 min to ~1 min and halves queue exposure (one job queues instead of two).
  • clone_depth: 1 - shaves most of the 8s full clone.

What was considered and not done

  • Caching node_modules: would save ~15s of the 22s install, but cache save/restore on AppVeyor costs a similar amount for a tree this size, and there is no npm lockfile (repo ships bun.lock) to key it reliably. Not worth it.
  • The queue wait itself can't be configured away. If 1-6.5 min of queue is still too slow, the real fix is moving Windows coverage to GitHub Actions (runs-on: windows-latest starts in seconds) and retiring AppVeyor - happy to do that in a follow-up if preferred.

🤖 Generated with Claude Code

AppVeyor wall-clock on recent PRs was 4-10 min for ~65s of actual work:
the free plan runs 1 concurrent job, so the 22/24 matrix serialized -
job 2 waited for job 1 plus its own ~65s VM provision, tripling the run
portion. Windows coverage is this job's only purpose (Actions already
runs the 22/24/26 version matrix on Linux), so a single Node 24 job
gives the same signal in ~1 min of run time and only one queue wait.

Also clone_depth: 1 - the full clone was ~8s of the job.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@yagop
yagop marked this pull request as ready for review July 10, 2026 13:51
@yagop
yagop merged commit 62574d3 into master Jul 10, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant