-
Notifications
You must be signed in to change notification settings - Fork 722
Description
Due to a host of issues that have been noted through continuous usage of the Haskell GitLab CI by @hasufell, he suggests that we discuss a migration from the GitLab runners to GitHub's own runners.
The proposal (originally here) is transcribed below:
Migrating tooling to github / providing github action runners to Haskell infrastructure
Current state
- GHCup relies on Gitlab CI for testing and releases
- GHCup maintainers also use Gitlab CI to build darwin M1 stack binaries
- HLS and Cabal rely on Gitlab CI for releases only
- projects like bytestring rely on very slow emulation on github actions or other semi-private runners
The problem
- GHC Gitlab is focussed on providing working GHC binaries and environment for GHC developers.
That makes other projects or less popular Systems (like FreeBSD) second class citizens.
The current state of priorities was communicated here - All runners on GHC Gitlab are custom and are often maintained by different parties. Getting
support for broken runners is not always easy. In fact, I have a more direct line to Github staff
(who are old Gentoo dev colleagues) than to GHC gitlab devops or runner maintainers. On Github,
we would only maintain a subset of runners ourselves (e.g. darwin M1) instead of all of them. - Maintaining two sets of CI configurations for HLS and Cabal is not only a maintenance burden, but also
means that these projects don't regularly test their PRs and changes against ALL architectures, but
only do so at release time (which may be too late). All those projects have communicated that they
don't want to migrate fully to Gitlab last I asked (and actually proposed this). - Ideally, all core tooling and core libraries should have access to all relevant architectures that GHC
supports... on Github actions.
The solution
- migrate GHCup fully to Github
- migrate release CI of HLS and Cabal to Github
- buy our own runners (for e.g. darwin M1) with Opencollective money from GHCup and HLS and with help from HF funding
and maintain them across our teams- darwin M1 prolly at 150$ per month per box (e.g. Macstadium)
- AWS instances (FreeBSD and aarch64 Linux) for 730 hours (one month) somewhere around 50-150$ per box, depending on instance
- initial cost may be 500-1000$ per month for a kickstart
HF has indicated (but not promised) that they may help with resources or funding of this solution.
Side effects
- may reduce runner pressure and load on Gitlab CI, freeing up resources for GHC development
- will reduce pressure on devops, because CI issues affect less projects
Remarks
Matthew's concerns on environment and reproducibility
Matthew was concernd about not using gitlab environments (probably the ci docker images) to match the environment where GHC
is built.
Note from Julian: However, we don't do that in HLS CI anyway, at the moment, only partly.
Zubin remarked we can switch CI to gitlab without switching source control
HLS and Cabal could theoretically use gitlab CI exclusively for both testing and releases and then have hooks and
integration with github.
Note from Julian: that would only fix problem 3.