Skip to content

Use otherwise.

Use otherwise. #70

Workflow file for this run

name: Build
concurrency: build
on:
push:
workflow_call:
inputs:
resolver:
required: false
type: string
coverage:
required: false
type: boolean
env:
extra_stack_args:
extra_key_part:
jobs:
test:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set environment
if: ${{ inputs.resolver != '' }}
run: |
echo "extra_stack_args=--resolver ${{ inputs.resolver }}" >> $GITHUB_ENV
echo "extra_key_part=-resolver-${{ inputs.resolver }}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- name: Setup
uses: haskell-actions/setup@v2
with:
enable-stack: true
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ~/.stack
key: stack${{ env.extra_key_part }}-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('package.yaml', 'stack.yaml') }}
- name: Cache build artifacts
if: ${{ !inputs.coverage }}
uses: actions/cache@v4
with:
path: .stack-work
key: stack${{ env.extra_key_part}}-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('app/**', 'bench/**', 'src/**', 'test/**') }}
- name: Build and test
if: ${{ !inputs.coverage }}
run: stack build --test --bench --no-run-benchmarks ${{ env.extra_stack_args }}
- name: Coverage
id: coverage
if: ${{ inputs.coverage }}
run: |
stack build --test --bench --no-run-benchmarks ${{ env.extra_stack_args }} --coverage
echo "coverage-report=$(stack path --local-hpc-root)" >> $GITHUB_OUTPUT
- name: Upload coverage report
if: ${{ inputs.coverage }}
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: ${{ steps.coverage.outputs.coverage-report }}