From 6869b4e0bfaf8653d01ef180b3b154eb4e5dfbc5 Mon Sep 17 00:00:00 2001 From: Frank Staals Date: Sun, 7 Jan 2024 18:58:43 +0100 Subject: [PATCH] github pages workflow :) --- .github/workflows/gh-pages.yml | 190 +++++---------------------------- 1 file changed, 24 insertions(+), 166 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 6799e6637..d3ac01e29 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -3,12 +3,10 @@ on: - push jobs: linux: - name: Haskell-CI - Linux - ${{ matrix.compiler }} - runs-on: ubuntu-20.04 + name: GH-Pages - Linux - ${{ matrix.compiler }} + runs-on: ubuntu-22.04 timeout-minutes: 60 - container: - image: buildpack-deps:bionic continue-on-error: ${{ matrix.allow-failure }} strategy: matrix: @@ -18,181 +16,47 @@ jobs: compilerVersion: 9.6.1 setup-method: ghcup allow-failure: false + cabalVersion: 3.10.2.1 fail-fast: false steps: - - name: apt + - name: Set environment variables run: | - apt-get update - apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 - mkdir -p "$HOME/.ghcup/bin" - curl -sL https://downloads.haskell.org/ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup" - chmod a+x "$HOME/.ghcup/bin/ghcup" - "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) - "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false) - env: - HCKIND: ${{ matrix.compilerKind }} - HCNAME: ${{ matrix.compiler }} - HCVER: ${{ matrix.compilerVersion }} - - name: Set PATH and environment variables - run: | - echo "$HOME/.cabal/bin" >> $GITHUB_PATH - echo "$HOME/.ghcup/bin" >> $GITHUB_PATH - echo "LANG=C.UTF-8" >> "$GITHUB_ENV" echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV" - echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV" - HCDIR=/opt/$HCKIND/$HCVER - HC=$HOME/.ghcup/bin/$HCKIND-$HCVER - echo "HC=$HC" >> "$GITHUB_ENV" - echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV" - echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV" - echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV" - HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))') - echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV" - echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" - echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV" - echo "HEADHACKAGE=false" >> "$GITHUB_ENV" - echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" - echo "GHCJSARITH=0" >> "$GITHUB_ENV" - env: - HCKIND: ${{ matrix.compilerKind }} - HCNAME: ${{ matrix.compiler }} - HCVER: ${{ matrix.compilerVersion }} - name: env run: | env - - name: write cabal config - run: | - mkdir -p $CABAL_DIR - cat >> $CABAL_CONFIG <> $CABAL_CONFIG < cabal-plan.xz - echo 'f62ccb2971567a5f638f2005ad3173dba14693a45154c1508645c52289714cb2 cabal-plan.xz' | sha256sum -c - - xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan - rm -f cabal-plan.xz - chmod a+x $HOME/.cabal/bin/cabal-plan - cabal-plan --version - - name: checkout - uses: actions/checkout@v3 - with: - path: source - - name: initial cabal.project for sdist - run: | - touch cabal.project - echo "packages: $GITHUB_WORKSPACE/source/hgeometry-combinatorial" >> cabal.project - echo "packages: $GITHUB_WORKSPACE/source/hgeometry" >> cabal.project - cat cabal.project - - name: sdist + - uses: actions/checkout@v3 + - name: Setup toolchain run: | - mkdir -p sdist - $CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist - - name: unpack - run: | - mkdir -p unpacked - find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \; - - name: generate cabal.project - run: | - PKGDIR_hgeometry_combinatorial="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/hgeometry-combinatorial-[0-9.]*')" - echo "PKGDIR_hgeometry_combinatorial=${PKGDIR_hgeometry_combinatorial}" >> "$GITHUB_ENV" - PKGDIR_hgeometry="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/hgeometry-[0-9.]*')" - echo "PKGDIR_hgeometry=${PKGDIR_hgeometry}" >> "$GITHUB_ENV" - rm -f cabal.project cabal.project.local - touch cabal.project - touch cabal.project.local - echo "packages: ${PKGDIR_hgeometry_combinatorial}" >> cabal.project - echo "packages: ${PKGDIR_hgeometry}" >> cabal.project - echo "package hgeometry-combinatorial" >> cabal.project - echo " ghc-options: -Werror=missing-methods" >> cabal.project - echo "package hgeometry" >> cabal.project - echo " ghc-options: -Werror=missing-methods" >> cabal.project - cat >> cabal.project <> cabal.project.local - cat cabal.project - cat cabal.project.local - - name: dump install plan - run: | - $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all - cabal-plan - name: restore cache uses: actions/cache/restore@v3 with: key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} path: ~/.cabal/store restore-keys: ${{ runner.os }}-${{ matrix.compiler }}- - - name: haddock + - name: build run: | - $CABAL haddock --haddock-all $ARG_COMPILER $ARG_TESTS $ARG_BENCH --with-haddock $HADDOCK all > haddock.raw.txt - "$HOME/.ghcup/bin/ghcup" set ghc "$HCVER" - $CABAL haddock-project --with-haddock=$HADDOCK - env: - HCVER: ${{ matrix.compilerVersion }} - - name: haddock-badge + cabal update + cabal build hiraffe + - name: haddock run: | - grep ") in " haddock.raw.txt | sort -hr > haddock.txt - COVERAGE=$(awk '{good += $3; total += $5} END {printf "%.0f", good/total*100}' haddock.txt) - echo "\ - { \"schemaVersion\": 1, \ - \"label\": \"api docs\", \ - \"message\": \"$COVERAGE%\", \ - \"color\": \"success\" \ - }" > haddock_badge.json - cat haddock.txt + ./haddock.sh - name: copy-to-pages run: | - mkdir --parents ../pages/docs/ - cp -r haddocks ../pages/docs/ - cp haddock.txt ../pages/docs/ - cp haddock_badge.json ../pages/docs/ + mkdir --parents pages + cp -r haddocks pages + cp haddock.txt pages/ + cp haddock_badge.json pages/ + + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: docs # The branch the action should deploy to. + folder: pages # The folder the action should deploy. - name: save cache uses: actions/cache/save@v3 @@ -200,9 +64,3 @@ jobs: with: key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} path: ~/.cabal/store - - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: docs # The branch the action should deploy to. - folder: pages # The folder the action should deploy.