-
Notifications
You must be signed in to change notification settings - Fork 1.2k
ci: Bump Guix build timeout and implement cacheing #5727
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
Conversation
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.
I think we should work on implementing caching or appropriately scaling the runners instead. Is this mostly single threaded load? Why does it take so long? Could we get better performance with e.g. native ARM runners?
de5f100
to
4eaeef4
Compare
No idea about using other runners but I reduced the timeout from 12h I originally proposed to 8h and implemented some caching. It takes 6h+ with no/outdated cache and 4-5h with an up to date cache. The build time also vary due to the need to build some Guix modules when they are updated but 8h should be enough to cover that I think. Or we can slightly bump it later if needed. |
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.
utACK for squash merge
8h seems extremely long to me, given we just got the (theoretically much more complex) platform build down to <10m. Can we cache the Guix modules that need to be built? Is there any way we can switch this back to running on GitHub-hosted runners? |
8h is the upper limit, ~6.5h is the current known worst case scenario and this PR brings the time for (hopefully) most cases down to 4.5h. Also, in this Guix workflow we produce deterministic binaries for 7 hosts/platforms. I'm not familiar with platform workflows but is it even an apples-to-apples comparison?
We use substitutions (pre-built modules) already and I think all the cache Guix produces for it's own modules sits in
I guess it should be possible to do it by using https://github.com/marketplace/actions/install-gnu-guix maybe (but probably won't help because we'd need to install other packages too somehow). Right now we use docker to build it (we do not install |
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.
OK, let's merge for now and verify everything is working as expected for a few builds. @ktechmidas please monitor CPU usage during a run and see if we are better off running this on a low CPU-count host due to long time spent on single-threaded tasks during build. In that case we should be fine moving back to GH-hosted runners, where cache response time will also be faster.
Issue being fixed or feature implemented
Hopefully fixes issues like
https://github.com/dashpay/dash/actions/runs/6932017275
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes
What was done?
Bump timeouts for the job itself and for the corresponding step. Also, implemented caching for
.cache
anddepends
folders.How Has This Been Tested?
#5729
https://github.com/dashpay/dash/actions/runs/6996271543/job/19031968814?pr=5729
Breaking Changes
n/a
Checklist: