ci: new CI - #644
ci: new CI#644
Conversation
|
surprisingly, it is faster than the old one, because we removed 5-10 minutes of doing nothing in |
Signed-off-by: Alejandro Vaz <alejandro.vaz.myt@gmail.com>
|
I also don't think it's the best idea to do either fuzzing or benchmarking on PRs. It takes a considerable amount of time (namely for the benchmarking part), the fuzzing is flaky/inconsistent, especially for a 30 secs run, and the benchmarking is probably noisy and unreliable given that it's running on GitHub Actions runners, where it probably shouldn't run. I feel like we should run an extensive, longer, proper fuzzing under a cron schedule and benchmark manually via comments or using dedicated runners instead. But this is an off-topic thing I noticed during the nightly action run and, if relevant, should probably have an issue of its own. Originally posted by @pedrodesu in #658 (comment) |
|
we need some kind of baseline for benchmarks if it is not in GitHub actions, then where?? that's my main argument |
|
the motivation behind this: GitHub throttles CI minutes after 2k for the repo, because it's an org I think we still have unlimited but sometimes GitHub refuses to give us enough parallel runners for no good reason I think it's because we were consuming previously 30-40+ minutes of CI per run of for perspective, we have used ~6k minutes in the last year |
For local development of performance-critical work, the developer should bench in their own machine with For PRs, do not run
The motivation is very justifiable, I don't think we're using our 'action time' properly as of right now. |
|
will see what can be done tomorrow |
|
I have no idea how to implement callgrind into CI, zero I added the no-run compilations of benchmarks though |
|
I'll create another issue for that callgrind stuff honestly |
|
Alternatively, could be a good idea to check out codspeed instead of getting cachegrind/callgrind to work. Apparently some big OSS and non-OSS projects use it for the exact matter we're trying to improve here. Just some food for thought. |
this PR remakes CI and simplifies it a great deal
it is a replacement for the
rust.ymlworkflowit adds three workflows:
checks.yml=> fast checks "everything is okay" for PRs. runs on PRs, merge queue, and manuallyfuzzing.yml=> fuzzing, runs on cron every dat at 00:00 UTC, and manually when requestedit deliberately changes
tests/borsh.rs::round_trip_zstto have less elements so the miri test doesn't hang and reorders a block insrc/taggedlen.rsso that there is no warning emittedcloses #654, it also removes
dependabot.ymlchecks
checks has seven jobs:
in total, these jobs are more comprehensive than our current checks
it removes the old beta testing. argument: why have it when we have both stable and nightly?? what's the point exactly?? it's the same as saying we should test every rust version since the MSRV or every nightly commit
it also removes the old "abort all other checks if one fails" so you can discover all issues at the same time
estimated run time: 1-2 minutes, around 8-10x faster than our current checks, which is perfect for PRs
fuzzing
fuzzing is currently being remade on #658
this PR adds the solicited cron job and separates it from regular checks
this probably should be updated once that PR lands