-
Notifications
You must be signed in to change notification settings - Fork 8
130 lines (111 loc) · 3.2 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
on:
workflow_dispatch:
pull_request:
push:
branches:
- master
schedule:
- cron: '23 14 * * 2'
release:
name: build
jobs:
lint:
name: "Run hlint"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up HLint
uses: haskell-actions/hlint-setup@v2
- name: Run HLint
uses: haskell-actions/hlint-run@v2
with:
fail-on: warning
fourmolu:
name: "Run fourmolu"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/run-fourmolu@v9
with:
version: "0.11.0.0"
lint-solution:
name: "Run hlint on the solution branch"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: solution
- name: Set up HLint
uses: haskell-actions/hlint-setup@v2
- name: Run HLint
uses: haskell-actions/hlint-run@v2
with:
fail-on: warning
fourmolu-solution:
name: "Run fourmolu on the solution branch"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: solution
- uses: haskell-actions/run-fourmolu@v9
with:
version: "0.11.0.0"
generateMatrix:
name: "Generate matrix from cabal"
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout base repo
uses: actions/checkout@v4
- name: Extract the tested GHC versions
id: set-matrix
run: |
wget https://github.com/Kleidukos/get-tested/releases/download/v0.1.5.0/get-tested-0.1.5.0-linux-amd64 -O get-tested
chmod +x get-tested
./get-tested --ubuntu rhine-koans.cabal >> $GITHUB_OUTPUT
build-cabal:
runs-on: ubuntu-latest
needs: generateMatrix
strategy:
matrix: ${{ fromJSON(needs.generateMatrix.outputs.matrix) }}
name: Haskell GHC ${{ matrix.ghc }} cabal
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/setup@v2
id: setup
with:
ghc-version: ${{ matrix.ghc }}
- name: Cache Cabal build artifacts
uses: actions/cache@v3
with:
path: |
${{ steps.setup-haskell-build.outputs.cabal-store }}
dist-newstyle
key: ${{ runner.os }}-cabal-${{ matrix.ghc }}
restore-keys: |
${{ runner.os }}-cabal-${{ matrix.ghc }}
- name: Cabal build dependencies
run: cabal build all --enable-tests --only-dependencies
- name: Check whether solution branch only contains diffs in the Koans
run: |
git fetch origin main
git fetch origin solution
git checkout solution
git diff origin/solution --exit-code -- ':(exclude)koans/**/Koan.hs'
- name: Check out solution branch
uses: actions/checkout@v4
with:
ref: solution
- name: Cabal build solutions
run: cabal build all --enable-tests -fdev
- name: Cabal test solutions
run: cabal test all --enable-tests --test-show-details=Always
success:
name: All GHCs built successfully
runs-on: ubuntu-latest
needs: build-cabal
steps:
- name: Success
run: echo "Success"