Reduce repeated CI setup work

Open
#472 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Active
Tech stack
github-actions, rust

Research direction

Start with the linked runs (42549528764, 42549528582, 42549528544) to see which setup steps dominate each job. The changes span several workflow jobs, the Asterinas cleanup, the openEuler self-test matrix, cargo-binutils versus llvm-objcopy, and the Library check grouping, so find the rust-objcopy and rust-nm callers first. Done means the same toolchain, feature and boot-path coverage with measured cold and warm timings.

Written by the indexing model from the issue text.

Description

A-CI C-optimization

Some CI jobs spend more time on setup than on the checks themselves. A few things we could simplify:

  • Skip Asterinas disk cleanup when cached boot products are available. It took 125s and 142s in this run. Move cleanup into the container-build path, and measure disk usage before deciding whether cold builds still need it.
  • Run the openEuler offline self-tests once per workflow. Each matrix job currently runs the full suite, taking about 218s in this run.
  • Use llvm-objcopy where possible instead of compiling cargo-binutils in every boot job. Check direct rust-objcopy and rust-nm callers when doing this.
  • Group small Library checks to share toolchain setup. This run started 15 jobs for about 45s of build and test steps.

Keep the existing toolchain, feature and boot-path coverage. Compare both cold and warm runs.

Related: #466, #468.

Dominant language
Rust
Stars
1.3k
Forks
184
Avg merge
2d 23h
Merged PRs (30d)
29

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

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.

More from rustsbi/rustsbi

All issues in rustsbi/rustsbi

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.