From 14372a7ce330793bd54fdb33daa5d00acb365e62 Mon Sep 17 00:00:00 2001 From: Igor Ranieri Date: Sat, 27 Sep 2025 15:05:18 +0200 Subject: [PATCH] Updated dockerfile / ci setup --- .forgejo/workflows/test.yaml | 34 +++++--------------------- Dockerfile | 46 ++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 48 deletions(-) diff --git a/.forgejo/workflows/test.yaml b/.forgejo/workflows/test.yaml index d780c83..ee81782 100644 --- a/.forgejo/workflows/test.yaml +++ b/.forgejo/workflows/test.yaml @@ -12,12 +12,8 @@ jobs: build: runs-on: docker container: - image: haskell:9.10 + image: elland/haddock2:latest steps: - - name: Install Node.js (for actions) - run: | - curl -fsSL https://deb.nodesource.com/setup_22.x | bash - - apt-get install -y nodejs - name: Checkout code uses: actions/checkout@v4 - name: Check versions @@ -49,13 +45,9 @@ jobs: test: runs-on: docker container: - image: haskell:9.10 + image: elland/haddock2:latest needs: build steps: - - name: Install Node.js (for actions) - run: | - curl -fsSL https://deb.nodesource.com/setup_22.x | bash - - apt-get install -y nodejs - name: Checkout code uses: actions/checkout@v4 - name: Cache Cabal packages @@ -82,18 +74,11 @@ jobs: fourmolu: runs-on: docker container: - image: haskell:9.10 + image: elland/haddock2:latest + needs: build steps: - - name: Install Node.js (for actions) - run: | - curl -fsSL https://deb.nodesource.com/setup_22.x | bash - - apt-get install -y nodejs - name: Checkout code uses: actions/checkout@v4 - - name: Update Cabal package index - run: cabal update - - name: Install fourmolu - run: cabal install fourmolu-0.18.0.0 - name: Run fourmolu run: | find src test app -name "*.hs" -exec fourmolu --check-idempotence {} \; 2>/dev/null || true @@ -102,18 +87,11 @@ jobs: hlint: runs-on: docker container: - image: haskell:9.10 + image: elland/haddock2:latest + needs: build steps: - - name: Install Node.js (for actions) - run: | - curl -fsSL https://deb.nodesource.com/setup_22.x | bash - - apt-get install -y nodejs - name: Checkout code uses: actions/checkout@v4 - - name: Update Cabal package index - run: cabal update - - name: Install hlint - run: cabal install hlint - name: Run hlint run: | if [ -d src ]; then hlint src/; fi diff --git a/Dockerfile b/Dockerfile index b89b3d2..c2919c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,36 @@ -FROM haskell:9.10 +FROM haskell:9.10.2-bullseye AS builder -# Install system dependencies -RUN apt-get update && apt-get install -y \ - git \ - curl \ - && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y curl git && rm -rf /var/lib/apt/lists/* -# Install Node.js (for GitHub Actions compatibility) RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* -# Update cabal and install Haskell tools RUN cabal update && \ cabal install --install-method=copy --installdir=/usr/local/bin \ - fourmolu \ - hlint \ - cabal-gild + fourmolu hlint cabal-gild -# Verify installations -RUN ghc --version && \ - cabal --version && \ - node --version && \ - fourmolu --version && \ - hlint --version && \ - cabal-gild --version - -# Set working directory WORKDIR /workspace + +FROM haskell:9.10.2-bullseye + +RUN apt-get update && apt-get install -y \ + libgmp10 \ + curl \ + && rm -rf /var/lib/apt/lists/* + +RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ + apt-get install -y nodejs && \ + rm -rf /var/lib/apt/lists/* + +RUN cabal update + +COPY --from=builder /usr/local/bin/cabal /usr/local/bin/ +COPY --from=builder /usr/local/bin/fourmolu /usr/local/bin/ +COPY --from=builder /usr/local/bin/hlint /usr/local/bin/ +COPY --from=builder /usr/local/bin/cabal-gild /usr/local/bin/ + +WORKDIR /workspace + +CMD [ "bash" ] +