Skip to content

Fix CI: bump Node, consolidate runners, dedupe triggers#44

Merged
rikuson merged 6 commits into
masterfrom
fix-ci-node-version
May 10, 2026
Merged

Fix CI: bump Node, consolidate runners, dedupe triggers#44
rikuson merged 6 commits into
masterfrom
fix-ci-node-version

Conversation

@rikuson

@rikuson rikuson commented May 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • lint: Bump actions/setup-node from Node.js 16 → 20. editorconfig-checker@6.1.1 requires Node.js ≥ 20.11.0, so the lint job was crashing with TypeError [ERR_INVALID_ARG_TYPE] on Node 16.
  • macos: Drop the macos-12 / macos-11 matrix and run on macos-latest only. Both macos-11 (EOL 2024-06) and macos-12 (EOL 2024-12) are no longer available as GitHub-hosted runners. macOS-specific behavior lives in src/platform/darwin.sh and is mediated by Homebrew's gnu-sed / gnu-getopt, which doesn't vary by macOS version.
  • ubuntu: Drop the ubuntu-22.04 / ubuntu-20.04 matrix and run on ubuntu-latest only. ubuntu-20.04 reached EOL on GitHub-hosted runners in 2025-04. The project's Linux dependencies (coreutils, git, tree) don't vary across Ubuntu versions.
  • triggers: Restrict on: push to master only. Previously push had no branches filter, so any push to a branch with an open PR fired both the push and pull_request events and ran the workflow twice in parallel.
  • darwin tmpdir: Drop the HFS ramdisk shredding from src/platform/darwin.sh. That logic was inherited from pass (a password manager) so secrets in tempfiles could never reach disk. quiz stores flashcards, not secrets, and on modern macOS (Apple Silicon, macOS 14/15) the hdid / newfs_hfs / mount -t hfs calls hung make test indefinitely. Replace with the same mktemp -d + rm -rf-on-EXIT pattern the Linux /dev/shm branch uses.
  • macOS deps: Add gnu-getopt to the brew install step. darwin.sh resolves $GETOPT via brew --prefix gnu-getopt, which echoes the expected install path even when the formula isn't installed, so $GETOPT was pointing at a non-existent binary and make test failed with No such file or directory.

Test plan

  • lint job passes on this PR
  • macos (macos-latest) job runs to completion (no hang, getopt resolves) and passes
  • ubuntu (ubuntu-latest) job runs and passes
  • Only one workflow run is created per push to this PR branch

🤖 Generated with Claude Code

rikuson and others added 2 commits May 10, 2026 19:41
editorconfig-checker@6.1.1 requires Node.js >= 20.11.0, so the lint
job on Node 16 was crashing with ERR_INVALID_ARG_TYPE before it could
report any actual lint findings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
macos-11 (EOL 2024-06) and macos-12 (EOL 2024-12) are no longer
available as GitHub-hosted runners, so the macOS jobs were stuck
queued. The macOS-specific behavior in this project lives in
src/platform/darwin.sh and is mediated by Homebrew's gnu-sed /
gnu-getopt, which doesn't vary by macOS version, so a single
macos-latest job is sufficient.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rikuson rikuson changed the title Bump CI Node.js to 20 for editorconfig-checker Fix CI: bump Node.js to 20 and consolidate macOS runner May 10, 2026
ubuntu-20.04 reached EOL on GitHub-hosted runners in 2025-04 and is
no longer scheduled, leaving that matrix entry stuck queued. The
project's Linux dependencies (coreutils, git, tree) don't vary
across Ubuntu versions, so a single ubuntu-latest job is sufficient.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rikuson rikuson changed the title Fix CI: bump Node.js to 20 and consolidate macOS runner Fix CI: bump Node.js and consolidate to *-latest runners May 10, 2026
Previously \`on: push\` had no branches filter, so pushing to a
branch with an open PR triggered both the \`push\` and
\`pull_request\` events and ran the entire workflow twice in
parallel. Limit \`push\` to master so post-merge runs still fire
once, while branch-level CI is handled solely by \`pull_request\`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rikuson rikuson changed the title Fix CI: bump Node.js and consolidate to *-latest runners Fix CI: bump Node, consolidate runners, dedupe triggers May 10, 2026
rikuson and others added 2 commits May 11, 2026 00:47
The macOS tmpdir override built an HFS ramdisk via hdid /
newfs_hfs / mount -t hfs so that the secret-bearing tempfiles
created by `pass` could never reach disk. quiz stores
flashcards, not secrets — the ramdisk-and-shred dance is
unnecessary, and on modern macOS (Apple Silicon, macOS 14/15)
those calls hang `make test` indefinitely in CI. Replace it
with the same `mktemp -d` + `rm -rf`-on-EXIT pattern the Linux
/dev/shm branch uses.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
src/platform/darwin.sh resolves \$GETOPT via
\`brew --prefix gnu-getopt\`, but the macOS workflow only
installed tree and gnu-sed. \`brew --prefix\` echoes the
expected install path even when the formula isn't installed,
so \$GETOPT pointed at a non-existent binary and \`make test\`
failed with \"No such file or directory\".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rikuson rikuson merged commit 2c88e76 into master May 10, 2026
3 checks passed
@rikuson rikuson deleted the fix-ci-node-version branch May 10, 2026 15:54
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