ci: new CI - #644
ci: new CI#644alejandro-vaz wants to merge 16 commits into
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 |
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 manuallyperformance.yml=> deep benchmarking, runs on v2 push 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 six 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
performance
two jobs:
running benchmarks simultaneously
estimated run time: 3-4 minutes, substantially faster than our current benchmarking because it executes in parallel
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