Skip to content

ci: install Rust with rustup instead of dtolnay/rust-toolchain - #746

Merged
EVWorth merged 1 commit into
mainfrom
claude/zen-babbage-6vq06i
Oct 5, 2026
Merged

EVWorth merged 1 commit into
mainfrom
claude/zen-babbage-6vq06i

Conversation

@EVWorth

@EVWorth EVWorth commented Oct 5, 2026

Copy link
Copy Markdown
Owner

This removes the dtolnay/rust-toolchain action from CI and release. Once it merges, #741's red Lint (workflows) check clears.

Why

  • Fewer third-party actions. rustup comes preinstalled on every GitHub-hosted runner and reads rust-toolchain.toml itself, so the action was a third-party step doing what the runner already can. Quantco/pixi-pack made the same change in ci: Replace dtolnay/rust-toolchain by simple rustup command Quantco/pixi-pack#340.
  • It's what was failing. Upstream moved its v1 tag, so our pin's # v1 note stopped matching and check-action-pins.sh failed every PR that touches scripts/ or the workflows. With no pin, there's nothing to fall out of date or re-review each time upstream pushes.

Change

Each Rust job used to run two steps: a sed one-liner that pulled the channel out of rust-toolchain.toml, then the action. Now it's one step:

- name: Install Rust toolchain
  shell: bash
  run: rustup toolchain install --profile minimal --no-self-update
  • This installs the pinned channel (1.95.0) plus the file's components (rustfmt, clippy). Every later cargo call in the checkout uses it, including in src-tauri/.
  • The release build matrix also runs rustup target add "$RUST_TARGET". The target is passed through env rather than written straight into the shell line.
  • shell: bash is kept because the Windows release runner defaults to PowerShell.
  • There are 5 uses in total: ci.yml (cargo Audit, Lint (Rust), Test Rust) and release.yml (integration DB, build matrix).
  • The comments in mise.toml and rust-toolchain.toml that named the action now say rustup.

Given up: the action's checksum-failure retry, added this week in dtolnay/rust-toolchain#186. It only matters while a Rust release is being published.

Verification

  • Locally with rustup 1.28.2, I ran the same command against a throwaway toolchain file pinning a different version. It installed exactly that version with rustfmt and clippy, a subdirectory picked it up, and rustup target add added to the same toolchain.
  • actionlint (the version pinned in mise.toml, checksum-verified, with shellcheck at --severity=info as in CI): clean. check-action-pins.sh --offline, test-check-action-pins.sh (12/12), check-documented-commands.sh and dprint check: clean.
  • Not covered by PR CI: release.yml only runs on a release, so the Windows and macOS build steps are first tested on the next release.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SCNjpC4VgppHSFs7P6rkZg


Generated by Claude Code

Every job that needs Rust ran two steps: a bash one-liner pulling the
channel out of rust-toolchain.toml, then dtolnay/rust-toolchain to
install it. rustup ships on every GitHub-hosted runner and reads
rust-toolchain.toml itself, so one step does both:

    rustup toolchain install --profile minimal --no-self-update

installs the pinned channel plus the file's components (rustfmt,
clippy), and every later cargo call in the checkout, src-tauri/
included, resolves to it. The release build adds
`rustup target add "$RUST_TARGET"` for its matrix target.

This drops a third-party action from the build path, which is also
what was turning Lint (workflows) red: upstream moved its v1 tag, so
the pin's version comment stopped matching (#741). With no pin there is
nothing to drift or to re-review on each upstream push. Quantco/pixi-pack
made the same change (Quantco/pixi-pack#340).

Given up: the action's new retry on release-server checksum failures.
That only bites while a Rust release is mid-publish.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SCNjpC4VgppHSFs7P6rkZg
@EVWorth
EVWorth merged commit c171dff into main Oct 5, 2026
12 checks passed
@EVWorth
EVWorth deleted the claude/zen-babbage-6vq06i branch October 5, 2026 02:35
EVWorth added a commit that referenced this pull request Oct 5, 2026
Version bump across the three manifests and the two lockfile entries
that record the app's own version.

What 1.2.0 contains since 1.1.0:

- Each editor tab runs on its own server session, so SET @var,
  temporary tables and multi-run transactions carry across runs (#734)
- Separate connection lanes for the agent and for backups/restores, so
  neither can starve the editor; the pool-exhausted message says what
  is holding the pool (#732, #727)
- Copy button beside Expand for long cell values, such as SHOW CREATE
  TABLE (#748)
- Linux/Wayland: WebKitGTK's DMABUF renderer is turned off, for the
  black area left after resizing the window (#742)
- Tauri 2.12 on both the npm and Rust sides (#749), and the dependency
  roll-up in #740
- rustls TLS 1.3 advisory RUSTSEC-2026-0285 patched (#728)

Also the first release built with rustup in place of
dtolnay/rust-toolchain (#746), so the release jobs' toolchain step runs
on Windows and macOS for the first time.


Claude-Session: https://claude.ai/code/session_01SCNjpC4VgppHSFs7P6rkZg

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants