Skip CI steps irrelevant to committed changes on PRs#4208
Merged
Gedochao merged 1 commit intoVirtusLab:mainfrom Apr 7, 2026
Merged
Conversation
582e911 to
4c7e112
Compare
tgodzik
approved these changes
Apr 7, 2026
Member
tgodzik
left a comment
There was a problem hiding this comment.
LGTM, though it's a lot of changes, so just had a quick look
Contributor
Author
it's also hard to fully test this without getting it on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Relevant to:
This is an attempt to save time on running tests irrelevant to changes on a given pull request.
i.e. when changing a doc or adding release notes, it is essentially pointless to run the whole integration suites, which pessimistically can run for hours, due to all the platforms necessary.
A new
changesjob is added, which classifies changes to categories. Steps in other jobs are then subsequently skipped based on category.This is a bit sneaky, as the jobs have to still "run" to satisfy our PR checks. The actual status on what was run can be checked based on the time a job elapsed & what was logged.
mainbranch & release tags bypass this, retaining the old behaviour (in fact, all jobs which don't originate from a PR retain the old behaviour, running everything).Additionally, override keywords have been added to allow to still run certain test suites even if the code in a PR would imply they're irrelevant. They're checked in the PR description and have syntax in the style of the Scala 3 compiler repo. Documented them in
DEV.md.Not including them in the PR description, as they would actually change behaviour 🙃
Checklist
tested the solution locally and it works(can't test locally)ran the code formatter ((irrelevant)scala-cli fmt .)ran(irrelevant)scalafix(./mill -i __.fix)ran reference docs auto-generation ((irrelevant)./mill -i 'generate-reference-doc[]'.run)How much have your relied on LLM-based tools in this contribution?
extensively, Cursor + Claude
How was the solution tested?
Testing it on the CI, impossible to test locally.