rust-lang / rust-lang/rust-playground

CI when miri is not available for the most recent nightly

Open
#828 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1.4k
Forks
267
Avg merge
3h 2m
Merged PRs (30d)
6

Description

As seen in https://rust-lang-nursery.github.io/rust-toolstate/ and https://rust-lang.github.io/rustup-components-history/, the miri rustup component is not always available in every nightly. Currently when this happens, CI on PRs to this repo fails in the "Build miri tool container" job, which is not a good contributor experience, since this failure has nothing to do with the content of the PR.

Currently the miri container is built FROM shepmaster/rust-nightly, which is the most recent nightly, not necessary the most recent nightly that supports miri:

https://github.com/integer32llc/rust-playground/blob/5ff43d72affe1eff0293c47241c51e3603ad9811/compiler/miri/Dockerfile#L1-L2

I would propose that we instead build it FROM shepmaster/rust-nightly-miri, which will be conditionally pushed by the same job that pushes shepmaster/rust-nightly. Basically the job will push shepmaster/rust-nightly, then run docker run shepmaster/rust-nightly rustup component add miri and if the exit code is 0, then push the same container as shepmaster/rust-nightly-miri. This way shepmaster/rust-nightly-miri will always track the most recent nightly that supports miri, and not get updated during intervals that miri is unavailable on nightly.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with compiler/miri/Dockerfile, especially lines 1–2, then inspect the CI job named "Build miri tool container" and the job that pushes shepmaster/rust-nightly. Verify how the miri component check and conditional image publication should fit there. Done means PR CI does not fail merely because miri is unavailable in the newest nightly, while the miri image tracks a compatible nightly.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, rust
Domain
ci-cd, devops
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.