hledger/.github/workflows/oldest.yml
2024-09-30 17:21:26 -10:00

156 lines
5.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TRIGGER: Runs on any push to oldest branch.
# ACTION: Builds and tests with stack and the oldest supported ghc.
name: oldest
on:
# When there's a push to the oldest branch, it runs in that branch.
push:
branches: [ oldest ]
# If manually triggered in github ui, it runs in master.
workflow_dispatch:
jobs:
oldest:
runs-on: ubuntu-24.04
env:
# This workflow uses github's preinstalled ghc & stack on ubuntu.
# Keep these synced with the latest ghc version at https://github.com/actions/runner-images/blob/ubuntu22/20240514.2/images/ubuntu/Ubuntu2404-Readme.md#haskell-tools
#
# caching id for this ghc's build artifacts:
ghc: 8107
# stack config for this ghc:
stack: stack --stack-yaml=stack8.10.yaml
steps:
- name: Check out
uses: actions/checkout@v4
# have to fetch everything for git describe for hledger's --version
with:
fetch-depth: 0
# CACHES
- name: Cache - stack global package db
id: stack-global
uses: actions/cache@v4
with:
path: ~/.stack
# XXX if stack.yaml is a symlink, this fails with
# Error: The template is not valid. .github/workflows/push.yml (Line: 103, Col: 14): hashFiles('**.yaml') failed.
# Fail to hash files under directory '/home/runner/work/hledger/hledger'
key: ${{ runner.os }}-stack-global-$ghc-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-global-$ghc
- name: Cache - stack-installed programs in ~/.local/bin
id: stack-programs
uses: actions/cache@v4
with:
path: ~/.local/bin
key: ${{ runner.os }}-stack-programs-$ghc-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-programs-$ghc
- name: Cache - .stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-stack-work-$ghc-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-work-$ghc
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-hledger-lib-stack-work-$ghc-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-lib-stack-work-$ghc
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-hledger-stack-work-$ghc-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-stack-work-$ghc
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-hledger-ui-stack-work-$ghc-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-ui-stack-work-$ghc
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-hledger-web-stack-work-$ghc-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-web-stack-work-$ghc
# ACTIONS
# in modular steps for faster & more focussed failures
- name: Install GHC
run: |
$stack setup --install-ghc
- name: Build deps of hledger-lib
run: |
$stack build --test --bench hledger-lib --only-dependencies
- name: Build/test hledger-lib
run: |
$stack install --test --bench hledger-lib --fast --ghc-options=-Werror
- name: Build deps of hledger
run: |
$stack build --test --bench hledger --only-dependencies
- name: Build/test hledger
run: |
$stack install --test --bench hledger --fast --ghc-options=-Werror
- name: Build deps of hledger-ui
run: |
$stack build --test --bench hledger-ui --only-dependencies
- name: Build/test hledger-ui
run: |
$stack install --test --bench hledger-ui --fast --ghc-options=-Werror
- name: Build deps of hledger-web
run: |
$stack build --test --bench hledger-web --only-dependencies
- name: Build/test hledger-web
run: |
$stack install --test --bench hledger-web --fast --ghc-options=-Werror
# XXX disable until this is fixed: shelltestrunner-1.10/src/shelltest.hs:125:20: error:
# shelltestrunner > Not in scope: configFailFast
# shelltestrunner > Perhaps you meant configFastFail (imported from Test.Hspec.Core.Runner)
# - name: Install shelltestrunner
# run: |
# export PATH=~/.local/bin:$PATH
# if [[ ! -x ~/.local/bin/shelltest ]]; then $stack install shelltestrunner-1.10; fi
# shelltest --version
# - name: Test functional tests (excluding addons)
# run: |
# export PATH=~/.local/bin:$PATH
# COLUMNS=80 $stack exec -- shelltest --execdir -j16 hledger/test -x /_ -x /addons -x ledger-compat/ledger-baseline -x ledger-compat/ledger-regress -x ledger-compat/ledger-collected
# # XXX run the bin/ func tests corresponding to the GHC version enabled above, only