Starting a new thread since I cannot reply in the original one.
@bgamari and other GHC maintainers, are there any specs on the necessary CI configuration? e.g. how large should the servers be, how often is CI run etc.
Starting a new thread since I cannot reply in the original one.
@bgamari and other GHC maintainers, are there any specs on the necessary CI configuration? e.g. how large should the servers be, how often is CI run etc.
I just finished putting together a concrete proposal, which I posted on the original thread.
Our current CI resources are listed here. CI is run on every opened merge request, every merge to master
, and nightly in a few more configurations. GHC has many configurations and target platforms; consequently, each validation pipeline consists of roughly a dozen GHC builds. Each of these builds takes between one and three hours (depending upon the configuration and platform).
The minimal viable runner configuration is probably 4 cores, 16 GB RAM and 200 GB available disk space. Most of our runners are considerably larger than this and run multiple jobs concurrently. Empirically we have found that parallel speed-up within a GHC build tends to fall off above 5 cores. Consequently, we generally limit each build to 4 cores and run as many concurrent jobs as necessary to fully occupy the machine.
I tried as well replying to the original thread, but can’t - it’s likely locked to only the Haskell Foundation members?
I think the proposal to move to Hetzner is very sane, given the licensing oddities with GCE instances. One thought though - if getting the licence via Hetzner is easier on the setup, especially when changing build hosts/etc., it might be a reasonable cost, even after the 14 months. But yes, either way seems to work.
Indeed, my sense is that the difference in license pricing is minor enough that it doesn’t matter one way or another.