Naar inhoud springen

Haskell

Haskell CI op GitHub Actions

GHC compileert de volledige afhankelijkheidsboom opnieuw bij elke CI-run.

35m → 9m
Koude bouw
35m → 2m
Warme bouw

GHC compileert de volledige afhankelijkheidsboom opnieuw bij elke CI-run.

Waarom het gebeurt

De Cabal- of Stack-winkel blijft niet bestaan, en de hercompilatiecontrole van GHC kan niet helpen op een nieuwe machine.

Wat te veranderen

  1. Cache ~/.cabal/store of ~/.stack ingetoetst op het bevriezings- of oplosserbestand
  2. Cache ook dist-newstyle of .stack-work voor incrementeel hergebruik
  3. Zet de GHC-versie expliciet vast: een bump maakt alles ongeldig
  4. Gebruik een runner van 16 vCPU en -j om over pakketten heen te parallelliseren

Haskell op runnerhut

yaml
jobs:
build:
runs-on: runnerhut-16vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/setup@v2
with: { ghc-version: '9.8' }
- run: cabal build all -j
Een werkend uitgangspunt

De enige runnerhut-specifieke regel is `runs-on: runnerhut-16vcpu-ubuntu-2404`. Al het andere is standaard GitHub Actions — dezelfde acties, dezelfde geheimen en hetzelfde machtigingsmodel dat u vandaag de dag gebruikt.

Je volgende build kan twee keer zo snel zijn, voor de halve prijs

Begin gratis. Weggaan is dezelfde ene regel, en die diff publiceren we ook.