Skip to content

ci: Compatibility nightly + local Mac CI (follows #31) - #35

Merged
hsliuustc0106 merged 1 commit into
mainfrom
ci/nightly-compat
Oct 14, 2026
Merged

hsliuustc0106 merged 1 commit into
mainfrom
ci/nightly-compat

Conversation

@hsliuustc0106

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #31 (slim PR gate). Stacked on #31's tip.

  • PR gate stays one job: ubuntu-latest · Node 24 · DSH 0.2.0-rc.2 (required check). Cost tweaks only on test.yml: cancel-in-progress only off main, paths-ignore for docs/** / **/*.md on push only (not on pull_request, so a required check is never skipped on docs PRs), job timeout-minutes: 20, 5-minute timeouts on npm ci / DSH install, persist-credentials: false.
  • New Compatibility workflow (.github/workflows/nightly.yml):
    • Daily cron 0 16 * * * (00:00 Asia/Shanghai): ubuntu·Node22·DSH 0.2.0-rc.2 + ubuntu·Node24·DSH 0.2.1-alpha.1
    • Weekly cron 0 17 * * 6 (Sun 01:00 Asia/Shanghai): windows-latest·Node24·DSH 0.2.0-rc.2
    • workflow_dispatch always runs daily + weekly legs
    • Skip schedule when main had no commits in the window (24h / 7d)
    • Job names prefixed compat · … so they never collide with the required check
    • Plugin suites (social + tree) included
    • No macOS in GHA — hs runs that locally
  • Local Mac CI: ds-bot/scripts/local-ci.sh + npm run ci:local (same gate steps + tip SHA pass/fail)

vs #29

This PR supersedes the matrix / compat parts of #29 (Windows / Node22 / DSH alpha / macOS-as-GHA). Remaining #29 pieces that are not here (hs to decide whether to keep #29 open for them):

  • composite action .github/actions/flybot-tests
  • package job + check-pack.mjs + tests-ok aggregate
  • coverage on the PR-gate job
  • release.yml (tag → GitHub Release)
  • CodeQL + Dependabot
  • SHA-pinned actions / actionlint step
  • broader test.yml rewrite (lint-before-test order, cancel-in-progress nuance already partially mirrored)

Cost (estimate)

Change Approx. minutes saved
PR gate 4→1 (#31, included) ~30–45 min / PR
docs-only push skip 1 full Test run / docs push
cancel superseded PR runs varies; avoids hanging runners
Windows weekly not daily ~5–6× ~15–20 min/week ≈ 75–120 min/week
No macOS GHA (local instead) ~15–25 min / would-be macOS run (and macOS is the expensive runner)
Skip nightly when main idle ~20–40 min / idle night (only the 5-min window check runs)

Verifier

  • ran: python3 yaml.safe_load on both workflows; bash -n ds-bot/scripts/local-ci.sh; Codex review → PASS (1 round)
  • not run: full npm test / live GHA (workflow + script only); actionlint not on the box

Test plan

  • After merge of ci: slim Test matrix to ubuntu Node 24 + DSH 0.2.0-rc.2 #31 (or with this stack), confirm Test still reports exactly one job named via the matrix template for ubuntu/24/rc.2
  • Dispatch Compatibility by hand; expect daily (2) + weekly (Windows) legs, no macOS
  • On Mac: cd ds-bot && npm run ci:local → PASS with tip SHA
  • Do not merge until tip is green / hs says so

Add .github/workflows/nightly.yml (Compatibility): daily ubuntu·Node22 and
ubuntu·DSH-alpha; weekly windows·Node24; skip schedule when main had no
commits in the window (24h/7d); workflow_dispatch always runs. No macOS in
GHA — hs runs that locally.

Tighten test.yml: cancel-in-progress only off main, paths-ignore docs on
push only, job/step timeouts, persist-credentials: false.

Add ds-bot/scripts/local-ci.sh and npm run ci:local for the Mac gate.

Verifier:
- ran: python3 yaml.safe_load on both workflows; bash -n local-ci.sh;
  Codex review → PASS (round 1)
- not run: full npm test / GHA (workflow + script only); actionlint not
  installed on the box
@hsliuustc0106
hsliuustc0106 merged commit a7868fc into main Oct 14, 2026
1 check 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