From 217c01836be1cd66f0390ab77f88162920f620c5 Mon Sep 17 00:00:00 2001 From: FredApps <153173854+FredApps@users.noreply.github.com> Date: Sun, 1 Nov 2026 02:47:50 +0100 Subject: [PATCH] ci(xtask): print the i18n report without recompiling the workspace (#5001) * ci: i18n report without a rebuild; PR print runs stop saving caches - xtask ci: the i18n report selects the whole workspace as the test stage did. With `-p vectorcraft-ui-egui` alone cargo resolved features differently and recompiled for about 3.5 minutes. `cargo xtask i18n-report` on its own still builds only that crate. - print.yml: only main saves the desktop-print cache. Each PR saved its own 1.3 GB cache that only that PR can read (6.3 GB across five PRs), pushing the repository past its 10 GB limit and evicting caches main's gate restores. Co-Authored-By: Claude Opus 5.5 * ci(xtask): i18n report selects the test run's targets too Co-Authored-By: Claude Opus 5.5 The test run builds --lib --bins --tests; a binary target's dependencies (the desktop app's eframe features) could still resolve differently under --lib alone. Match the selection exactly, and drop --quiet so a rebuild would show in the log. * ci: leave print.yml unchanged print.yml still runs its own jobs, and CLAUDE.md (CI workflows) keeps additions out of such files. The cache churn it causes goes to craft-common-actions instead. This PR is now the xtask change only. Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: FredApps Co-authored-by: Claude Opus 5.5 --- xtask/src/main.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 0516321ab..de6ff5815 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -294,7 +294,7 @@ fn cmd_ci() -> Result<(), String> { ("assets", Box::new(|| assets::run(&root()))), ("brands", Box::new(|| brands::run(&root()))), ("cursors", Box::new(|| cursors::run(&root()))), - ("i18n-report", Box::new(cmd_i18n_report)), + ("i18n-report", Box::new(cmd_ci_i18n_report)), ("layers", Box::new(cmd_layers)), ("wasm", Box::new(cmd_wasm)), ]; @@ -349,3 +349,13 @@ fn cmd_i18n_report() -> Result<(), String> { c.args(["test", "-p", "vectorcraft-ui-egui", "--lib", "--", "i18n::tests::untranslated_report", "--exact", "--nocapture"]); run(c, "cargo test -p vectorcraft-ui-egui --lib -- i18n::tests::untranslated_report --exact --nocapture") } + +/// [`cmd_i18n_report`] in `ci`, selecting the packages and targets the test stage did so it +/// reuses that build: with `-p vectorcraft-ui-egui --lib` alone cargo resolves features +/// differently and recompiled for about 3.5 minutes. Every other test binary runs with no test +/// matching the filter. +fn cmd_ci_i18n_report() -> Result<(), String> { + let mut c = cargo(); + c.args(["test", "--workspace", "--lib", "--bins", "--tests", "--", "i18n::tests::untranslated_report", "--exact", "--nocapture"]); + run(c, "cargo test --workspace --lib --bins --tests -- i18n::tests::untranslated_report --exact --nocapture") +}