Skip to content

Bump shared Rust toolchain to 1.96.1, guard :latest on main#11

Merged
ScottMorris merged 1 commit into
mainfrom
chore/bump-shared-rust-1.96.1
Jul 8, 2026
Merged

Bump shared Rust toolchain to 1.96.1, guard :latest on main#11
ScottMorris merged 1 commit into
mainfrom
chore/bump-shared-rust-1.96.1

Conversation

@ScottMorris

@ScottMorris ScottMorris commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Bumps RUST_TOOLCHAIN from 1.93.0 to 1.96.1 in docker/ci/Dockerfile. Threshold just standardized its own Rust pin on 1.96.1; the shared image was behind, which would reintroduce version drift the moment any consumer migrates onto it.

Guards the :latest tag so it's only produced on pushes to main. Previously every run — including a workflow_dispatch used just to validate a Dockerfile change — unconditionally overwrote :latest for every consumer of these images. Non-main runs now publish :staging instead, so validating a change no longer means shipping it to everyone first.

Test plan

  • Dispatch this workflow against this branch, confirm the publish-images matrix passes for all 4 images and that only :staging/:sha-* tags are produced (not :latest)
  • Pull tauri-ci-mobile:staging and confirm rustc --version reports 1.96.1
  • After merge, confirm the push-triggered run on main produces :latest as expected

🤖 Generated with Claude Code

https://claude.ai/code/session_01MM1S4DNyxhwcbkMcx3hDp2

Threshold just standardized its own Rust pin on 1.96.1 (rust-toolchain.toml +
dtolnay/rust-toolchain@1.96.1 in CI); the shared image was still on 1.93.0,
which would reintroduce version drift for any consumer once it migrates to
the shared image family.

Also guards the :latest tag so it only ever gets produced on pushes to main
-- non-main dispatches (used to validate this exact change) now publish
:staging instead, so testing a Dockerfile bump no longer overwrites the
tag every consumer actually depends on.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MM1S4DNyxhwcbkMcx3hDp2
@ScottMorris ScottMorris added infrastructure Shared infrastructure and automation work docker Container build and publish work ci Continuous integration workflows and checks rust Rust tooling and build and test work labels Jul 8, 2026
@ScottMorris ScottMorris merged commit 93ff4f4 into main Jul 8, 2026
4 of 5 checks passed
@ScottMorris ScottMorris deleted the chore/bump-shared-rust-1.96.1 branch July 8, 2026 23:25
ScottMorris added a commit that referenced this pull request Jul 8, 2026
## Summary

`ci-desktop` is the only multi-platform image in this workflow
(linux/amd64,linux/arm64). Building both platforms in one buildx
invocation on an amd64 runner emulates arm64 via QEMU, which takes 2+
hours for this Dockerfile's from-source cargo installs (`tauri-cli`,
`cargo-nextest`) -- confirmed directly on the currently-running
validation of #11, where the arm64 leg alone ran past 2h40m.

Splits the build into per-arch jobs -- amd64 on `ubuntu-24.04`, arm64 on
GitHub's native `ubuntu-24.04-arm` runner (GA for public repos since
August 2025; this repo is public) -- each pushing its image by digest,
followed by a merge job that combines both digests into the final tagged
manifest via `docker buildx imagetools create`. Neither leg touches
QEMU.

As a side benefit, each arch's smoke test now runs natively against its
own image instead of only ever smoke-testing amd64 while trusting arm64
to work by cross-arch faith (the previous single-job design only ever
set `smoke_platform: linux/amd64` even though it built both platforms
for the real push).

## Test plan

- [ ] Dispatch this workflow against this branch, confirm
`build-ci-desktop`'s two matrix legs both complete natively (no QEMU)
and noticeably faster than the ~2h40m baseline
- [ ] Confirm `merge-ci-desktop` successfully combines both digests into
one manifest and only produces `:staging`/`:sha-*` tags (not `:latest`,
since this isn't `main`)
- [ ] Pull the resulting `tauri-ci-desktop:staging` manifest and confirm
both `linux/amd64` and `linux/arm64` platforms are present (`docker
buildx imagetools inspect`)
- [ ] After this merges (on top of #11), confirm a push to `main`
produces a real `:latest` multi-arch manifest

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

https://claude.ai/code/session_01MM1S4DNyxhwcbkMcx3hDp2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Continuous integration workflows and checks docker Container build and publish work infrastructure Shared infrastructure and automation work rust Rust tooling and build and test work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant