Skip to content

ci: bump toolchains and upgrade mise-action to v5 - #7285

Merged
kanadgupta merged 8 commits into
developfrom
kanad-claude/mise-bun-actions-optimize-a0c03b
Oct 23, 2026
Merged

kanadgupta merged 8 commits into
developfrom
kanad-claude/mise-bun-actions-optimize-a0c03b

Conversation

@kanadgupta

@kanadgupta kanadgupta commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Toolchain bumps

  • Bumps pnpm, node, bun, and mise. mise.lock and pnpm-lock.yaml are updated to match.
  • Updates the mise version pinned in each GitHub Actions workflow.
  • Drops pnpm exec from bun commands. The toolchain setup already puts bun on PATH, so running it through pnpm only added a process hop and a pnpm lookup. Calling bun directly removes that overhead and complexity.

Workflow changes

flaky-check installs bun with oven-sh/setup-bun

Its plan and report jobs only need bun. setup-bun restores a 34 MB cache with just the bun binary. mise-action restored a 68 MB mise data directory and then ran a locked install and a listing on top, which took about twice as long on a cache hit. Every other bun-only step in the repository already uses setup-bun, so this makes them consistent.

jdx/mise-action moves from v4.3.0 to v5.2.2

What we gain:

  • The mise binary is verified before it runs. A downloaded binary is checked against the release's signed manifest, and a binary restored from cache is checked against the signed release checksums. Before, a cached binary could run unchecked.
  • The job's GitHub token stays inside the action. v4 wrote it to the environment of every later step. Now only the action sees it.
  • Caches rebuild every 30 days. GitHub never evicts a cache that keeps getting hits, so a busy repository could keep the same tools for months. The default key now rolls over on a schedule.

What does not change for us: every step pins a mise version, so the new release-age default does not apply, and the pinned mise ships the signed manifest the action now requires.

One thing to expect: the default cache key format changed, so each mise cache misses once after this lands. The sync check job runs mise install in a later step. It no longer gets the token, but it fetches release metadata through mise's own relay and downloads assets directly from GitHub releases, so it never used the token.

The shared setup action drops its custom cache_key

The custom key hashed mise.toml, mise.lock, .node-version, .bun-version, and package.json. mise-action's default key already covers mise.toml and mise.lock, plus the requested tool subset, the runner image, and the mise version. The lockfile pins the node, bun, and pnpm versions the version files select, and a locked install refuses any version the lockfile does not have. So the extra hashes could not catch anything the lockfile hash misses, and the default key is strictly better.

🤖 Generated with Claude Code

@kanadgupta kanadgupta added the run-ci Run full develop CI (tests) on drafts and non-develop PRs. label Oct 22, 2026
@kanadgupta
kanadgupta marked this pull request as ready for review October 23, 2026 00:36
@kanadgupta
kanadgupta requested review from a team and supabase-oss as code owners October 23, 2026 00:36

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 AI Review

Both independent reviews completed with no findings. An additional code and diff review found no actionable issues in the toolchain upgrades, workflow changes, or direct Bun invocations, and no fundamental conflict with the supplied next-branch work. Toolchain manifests and lockfile pins passed static consistency checks; external actions were not executed.

Findings

No issues found.

Stats

Claude findings: 0 · Codex findings: 0 · Confirmed: 0 · Refuted: 0 · Uncertain: 0


Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: auto · Workflow run

This review runs once per PR. A maintainer can request another with a /ai-review comment.

@kanadgupta
kanadgupta added this pull request to stack #7305 October 23, 2026 14:34
kanadgupta and others added 8 commits October 23, 2026 07:34
The plan and report jobs only need bun. setup-bun restores a 34 MB cache
holding just the bun binary, while mise-action restored a 68 MB mise data
directory and then ran a locked install and a listing on top, roughly
twice the step time on a cache hit and more on a miss. Every other
bun-only step in the repository already uses setup-bun.

Generated with AI

Co-Authored-By: Claude <noreply@anthropic.com>
Every step pins a mise version, so the new release-age default does not
apply, and the pinned mise ships the signed packslip the action now
requires. The action no longer exports MISE_GITHUB_TOKEN to later steps;
the one later mise install, in the sync check, fetches release metadata
through mise's relay and downloads assets directly, so it never used it.

Generated with AI

Co-Authored-By: Claude <noreply@anthropic.com>
mise-action's default key already hashes mise.toml and mise.lock and
includes the requested tool subset, the runner image and the mise
version. The lockfile pins the node, bun and pnpm versions the version
files select, and a locked install refuses a version the lockfile does
not carry, so the extra version-file hashes could not catch anything
the lockfile hash misses.

Generated with AI

Co-Authored-By: Claude <noreply@anthropic.com>
@kanadgupta
kanadgupta force-pushed the kanad-claude/mise-bun-actions-optimize-a0c03b branch from 3e0ab0b to 073596e Compare October 23, 2026 14:34
@kanadgupta
kanadgupta enabled stacked auto-merge October 23, 2026 14:34
@kanadgupta
kanadgupta added this pull request to the merge queue Oct 23, 2026
Merged via the queue into develop with commit da27a34 Oct 23, 2026
77 checks passed
@kanadgupta
kanadgupta deleted the kanad-claude/mise-bun-actions-optimize-a0c03b branch October 23, 2026 14:44
TFSebben pushed a commit to TFSebben/supabase_cli that referenced this pull request Oct 23, 2026
…ase#7287)

Stacked on supabase#7285.

## Bump

- `jactionlint` moves from 1.8.2 to 2.3.0 (`"2"` in mise.toml, pinned in
`mise.lock`).
- The config's deprecated `require-commit-hash` key becomes `rules:
unpinned-uses: error`, the vendored `.repos/**` submodules are excluded,
and the `missing-timeout` and `concurrency-limits` policy rules are
turned off.

## Fixes, one commit per rule

- **excessive-permissions**: single-job workflows grant their write
scopes on the job instead of the workflow. contribution-gate grants both
jobs the scopes its script needs. release-smoke-test's caller job keeps
the four scopes release-shared's job tree declares.
- **github-app**: the three release-notes App tokens request only the
permissions their jobs use, confirmed against GitHub's REST permission
tables.
- **superfluous-actions**: both `softprops/action-gh-release` steps
become `gh release create`, skipping when the release already exists and
verifying the tag the earlier step pushed.
- **pipeline-without-pipefail**, **github-env**, **artipacked**,
**unused-job-output**: small mechanical fixes.

## Accepted findings, one commit per rule

Each carries an inline `# jactionlint ignore=` comment with a
plain-English reason: `dangerous-triggers`, `adhoc-packages`,
`unverified-download`, `cache-poisoning` (run-scoped key),
`unpinned-images` (smoke-test container), `bot-conditions` (the author
check is already present), and `issues: write` on reopen-stale-issue.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-ci Run full develop CI (tests) on drafts and non-develop PRs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants