Skip to content

ci: replace deprecated dependabot auto-merge action with gh CLI - #405

Merged
dalisoft merged 16 commits into
masterfrom
ci/actions-upgrade
Oct 1, 2026
Merged

dalisoft merged 16 commits into
masterfrom
ci/actions-upgrade

Conversation

@dalisoft

@dalisoft dalisoft commented Oct 1, 2026

Copy link
Copy Markdown
Member

Summary

  • automerge.yml drops ahmadnassri/action-dependabot-auto-merge@v2.6.6 — unmaintained (last release Dec 2022) and running on the deprecated Node.js action runtime (the source of the Node 20 deprecation warnings in CI logs). Replaced with the plain gh CLI approve + --auto --squash pattern already used across the workspace (verified squash merging is enabled on this repo).
  • dependabot.yml gains a github-actions ecosystem entry (weekly, ci: prefix) so workflow/action updates are automated going forward.

Verification

  • Action latest-release check via GitHub API (2026-10-01): all other actions in this repo (checkout v7.0.1, setup-node v7.0.0, cache v6.1.0, setup-bun v2.2.0, typos v1.50.3) are already at latest.
  • YAML validated.

dalisoft and others added 16 commits October 1, 2026 20:46
- replace package-lock.json with bun.lock
- npm ci was broken: smartlint@6.0.4 no longer exists on the registry
…+rumdl+lefthook

- biome.json matches the old airlight prettier style (single quotes, 80 cols, no trailing commas)
- rumdl.toml mirrors the old .markdownlint.json (MD013/MD033/MD041/MD059 off)
- lefthook.yml: pre-commit (biome+rumdl), commit-msg (commitlint), pre-push (lint+test)
- code fixes surfaced by Biome/TS7 strict: explicit types, IBlock|undefined returns, typed reduce callback
…deps to latest

- bun build bundles esm/analyze.js (15 modules, 3ms); tsc --emitDeclarationOnly for typings
- drop rollup, @rollup/plugin-node-resolve, rollup-plugin-typescript2, jest, coveralls (929 -> 90 packages)
- jest spec ported 1:1 to node:test + node:assert/strict (assertions adapted to native fn.toString output — the old expectations depended on jest's babel transform)
- tsconfig: TS7 removals (moduleResolution node10, esModuleInterop=false), explicit rootDir, lib es2017, emitDeclarationOnly
- typings entry moved to typings/src/analyze.d.ts (rootDir now repo root)
commitlint 21 cannot resolve the legacy 'airlight' extends alias; the airlight
package was only a re-export of @commitlint/config-conventional anyway
Per review: minimize diff churn — noUnusedVariables/noUnusedFunctionParameters
are warnings in Biome config, and the cosmetic underscore renames they caused
are reverted to the original parameter names. Import reordering stays off.
lint/test jobs now run on the unprivileged pull_request event so PR code
never executes with repo secrets; the dependabot auto-merge job keeps
pull_request_target and never checks out PR code. both workflows were
also still on npm ci, which fails after the bun migration (no
package-lock.json); they now use bun 1.4.2 (pinned) against bun.lock
node --test treated trailing-slash directory arguments as module files
on node 22; the test script now passes a plain path. macos-12 runners
are retired and replaced with macos-14
actions/checkout v7, actions/cache v6, actions/setup-node v7. caching
~/.bun/install/cache instead of node_modules amortizes the uWS
GitHub-tag fetch (~13.5s cold of a 16s install) and hardlinks much
faster than a node_modules tarball restore
- ls-lint: restores the .ls-lint.yml ruleset (pointcase rule no longer
  exists in @ls-lint/ls-lint 2.3) and runs first in the lint pipeline
- oxlint: added as the eslint-slot linter after biome
- release: semantic-release and its .releaserc.json replaced by
  release-me-sh (same flow as nanoexpress: npm, npm-post, git and
  github-release plugins with signed tags)
- every workflow that executes PR code runs on the unprivileged
  pull_request event with contents: read workflow permissions; the
  dependabot auto-merge job moved to its own automerge.yml (the only
  pull_request_target workflow, filtered to dependabot, with no
  repository checkout at all)
- all actions pinned to commit SHAs with version comments
  (checkout v7.0.1, cache v6.1.0, setup-node v7.0.0, setup-bun v2.2.0,
  action-dependabot-auto-merge v2.6.6)
- review-approve workflows drop the checkout (gh CLI is API-only) and
  request only pull-requests: write
exact versions (checkout v7.0.1, cache v6.1.0, setup-node v7.0.0,
setup-bun v2.2.0, action-dependabot-auto-merge v2.6.6) instead of SHA
pins — same reproducibility guarantee, easier to read and bump
approves dalisoft's PRs with a LGTM comment using only the workflow
token on the unprivileged pull_request event (no secrets, no
pull_request_target); fork PRs and dependabot PRs are excluded —
dependabot approvals happen in automerge.yml. replaces the legacy
review-approve workflow where it existed
bare directory arguments are treated as module files on node 22 and 24
(only 26 accepts them); explicit globs work identically on 22, 24 and 26
…>= 22

BREAKING CHANGE: the next release is 3.0.0: Node.js >= 22 is required,
the build pipeline is bun-based, and the published package no longer
ships semantic-release as a runtime dependency

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@dalisoft
dalisoft merged commit f8755d7 into master Oct 1, 2026
3 of 4 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