-
Couldn't load subscription status.
- Fork 285
Have CI check for diffs after integration tests #5798
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sellout
Not sure where the best place to have this conversation is, but I'll put it here.
So I'm reluctant to include
**/ci.yamlhere, even though it's certainly more correct, because it causes any (possibly unrelated) change to the ci process — and there's often dozens of these when trying to add or modify any feature — take 45-60+ mins to evaluate.Any ideas for how to best deal with that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From the commit log, this file changes like three times a month, but that overlooks how many commits may have been pushed (and possibly edited) but never made it into trunk. So yeah, I can see it being churny within any of those changes, as you mostly have to iterate on CI directly.
I think the first thing to consider is whether it can be broken into independent workflows. It looks like there’s a legit dependency graph there, so I guess it’s unlikely (but, as an example, here it is before I moved the ormolu job a couple months ago).
Extracting more complicated CI steps into scripts that can easily be run locally can help reduce the churn of CI files, since they can more easily be tested & iterated on locally. But then those scripts should also be part of the hash, or else it just moves the same problem. And I am a fan of small jobs, but combining sequences of jobs into one can make this easier, too. E.g., on this run, it looks like “generate jit source”, “build jit binary”, and “test jit” are a sequence. They’re not quite, because “generate jit source” is one job, and then “build jit binary” is a matrix that all depend on that. But “built jit binary” and “test jit” seem like they could reasonably be a single job.
It might just be best to just leave
**/ci.yamlout, with a comment in case someone else (or me next month) comes back to add it again. That’s probably enough. If there’s some way to clear a particular cache entry1, that could also be mentioned in the comment. But I think mostly people won’t notice. I only did because I made a change that I expected to cause a CI failure (before pushing the fix), and it didn’t fail.Of course, there’s also just performance improvement, which is nice because it generally helps developers and/or users, too, but that’s usually motivated the other way around – because users or developers are frustrated.
Footnotes
Maybe a manually-triggerable workflow? But then that
keyvalue needs to be kept in sync between multiple workflows, which seems just likely to re-introduce the issue that Revert "Have CI check for diffs after integration tests" #5801, Revert "Revert "Have CI check for diffs after integration tests"" #5802, & don't useactions/cacheto share artifacts between jobs #5804 are solving. Unless CI moves to some templating approach, which is a bigger lift. ↩