on master help sign in
Update CIs, use fail-fast

Use fail-fast to avoid consuming resources unnecessarily. Move some CIs on older ghc versions to newer ones. Arrange fields in logical order. Add a CI for ghc head version

commita79ca8312e8430a1467d0546cb6c2eb1d194c917 authorHarendra Kumar <harendra@composewell.com> dateSun 23 Jan 2022, 01:42 (5 years ago) parent92db71a
1 file changed+88−62
.github/workflows/haskell.yml+88−62
.github/workflows/haskell.yml+88−62
@@ -8,7 +8,7 @@ on:
88
99jobs:
1010 build:
11− name: GHC ${{ matrix.name }}
11+ name: GHC ${{matrix.name}}
1212 env:
1313 # packcheck environment variables
1414 LC_ALL: C.UTF-8
@@ -47,106 +47,115 @@ jobs:
4747 DOCTEST: ${{ matrix.doctest }}
4848
4949 runs-on: ${{ matrix.runner }}
50+ continue-on-error: ${{ matrix.ignore_error }}
5051 strategy:
51− fail-fast: false
52+ fail-fast: true
5253 matrix:
54+ # The order is important to optimize fail-fast.
5355 name:
54− - 9.2.1
55− - 9.0.1
56− - 8.10.7+stack
57− - 8.10.7+macOS
58− - 8.10.7+linux+coverage+cabal
59− - 8.10.7+docspec
60− - 8.8.4
61− - 8.8.4+inspection+fusion-plugin+Werror
62− - 8.6.5+fusion-plugin
63− - 8.6.5+streamk
64− - 8.4.4+debug
56+ - 8.10.7-sdist-fusion-inspection-Werror
57+ - 9.2.1-docspec
58+ - 8.10.7-coverage
59+
60+ # Note: if cabal.project is not specified benchmarks and tests won't
61+ # run. But we need at least one test where we test without
62+ # cabal.project because that is how hackage would build it.
6563 include:
64+ - name: head
65+ ghc_version: head
66+ runner: ubuntu-latest
67+ build: cabal
68+ cabal_version: latest
69+ cabal_project: cabal.project.ghc-head
70+ disable_sdist_build: "y"
71+ ignore_error: true
6672 - name: 9.2.1
6773 ghc_version: 9.2.1
68− build: cabal-v2
69− cabal_build_options: "--allow-newer=hsc2hs"
74+ runner: ubuntu-latest
75+ build: cabal
76+ cabal_project: cabal.project
77+ cabal_version: 3.6
7078 disable_sdist_build: "y"
79+ ignore_error: false
80+ - name: 9.2.1-docspec
81+ ghc_version: 9.2.1
7182 runner: ubuntu-latest
83+ doctest: "y"
7284 cabal_version: 3.6
85+ ignore_error: false
7386 - name: 9.0.1
7487 ghc_version: 9.0.1
75− build: cabal-v2
76− cabal_build_options: "--allow-newer=hsc2hs"
88+ runner: ubuntu-latest
89+ build: cabal
90+ cabal_version: 3.6
91+ cabal_project: cabal.project
7792 disable_sdist_build: "y"
93+ ignore_error: false
94+ - name: 8.10.7-sdist-stack
7895 runner: ubuntu-latest
79− cabal_version: 3.4
80− - name: 8.10.7+stack
8196 build: stack
82− resolver: lts-18.18
97+ resolver: lts-18.23
8398 stack_yaml: stack.yaml
8499 sdist_options: "--ignore-check"
85100 stack_build_options: "--flag streamly-benchmarks:-opt"
86− runner: ubuntu-latest
87− cabal_version: 3.4
88− - name: 8.10.7+macOS
101+ cabal_version: 3.6
102+ ignore_error: false
103+ - name: 8.10.7-macos
89104 ghc_version: 8.10.7
90− build: cabal-v2
91− disable_sdist_build: "y"
92105 runner: macos-latest
93− cabal_version: 3.4
94− - name: 8.10.7+linux+coverage+cabal
106+ build: cabal
107+ cabal_version: 3.6
108+ cabal_project: cabal.project
109+ disable_sdist_build: "y"
110+ ignore_error: false
111+ - name: 8.10.7-coverage
95112 ghc_version: 8.10.7
113+ runner: ubuntu-latest
96114 coverage: "y"
115+ cabal_version: 3.6
116+ ignore_error: false
117+ - name: 8.10.7-sdist-fusion-inspection-Werror
118+ ghc_version: 8.10.7
97119 runner: ubuntu-latest
98− cabal_version: 3.4
99− - name: 8.8.4+inspection+fusion-plugin+Werror
100− ghc_version: 8.8.4
101− build: cabal-v2
120+ build: cabal
121+ cabal_version: 3.6
102122 cabal_project: cabal.project.Werror
103123 cabal_build_options: "--flag fusion-plugin --flag inspection"
104− runner: ubuntu-latest
105− cabal_version: 3.4
106− - name: 8.8.4
124+ ignore_error: false
125+ - name: 8.8.4-sdist-fusion
107126 ghc_version: 8.8.4
127+ runner: ubuntu-latest
108128 build: cabal
129+ cabal_version: 3.6
109130 cabal_project: cabal.project
110− cabal_build_options: "--flag -opt"
111− runner: ubuntu-latest
112− cabal_version: 3.4
113− - name: 8.6.5+streamk
131+ cabal_build_options: "--flag fusion-plugin"
132+ ignore_error: false
133+ - name: 8.6.5-sdist-streamk-unoptimized
114134 ghc_version: 8.6.5
115− build: cabal-v2
135+ runner: ubuntu-latest
136+ build: cabal
137+ cabal_version: 3.6
116138 cabal_project: cabal.project
117139 cabal_build_options: "--flag streamk --flag -opt"
118− runner: ubuntu-latest
119− cabal_version: 3.4
120− - name: 8.6.5+fusion-plugin
140+ ignore_error: false
141+ - name: 8.6.5-sdist-debug-unoptimized
121142 ghc_version: 8.6.5
122− build: cabal-v2
123− cabal_project: cabal.project
124− cabal_build_options: "--flag fusion-plugin"
125− # haddock generation does not work with 8.6.5+fusion-plugin
126− disable_docs: "y"
127143 runner: ubuntu-latest
128− cabal_version: 3.4
129− - name: 8.4.4+debug
130− ghc_version: 8.4.4
131− build: cabal-v2
144+ build: cabal
145+ cabal_version: 3.6
132146 cabal_project: cabal.project
133147 cabal_build_options: "--flag debug --flag -opt"
148+ ignore_error: false
149+ - name: 8.4.4-sdist
150+ ghc_version: 8.4.4
134151 runner: ubuntu-latest
135− cabal_version: 3.4
136− - name: 8.10.7+docspec
137− ghc_version: 8.10.7
138− doctest: "y"
139− runner: ubuntu-latest
140− cabal_version: 3.4
152+ build: cabal
153+ cabal_version: 3.6
154+ ignore_error: false
141155
142156 steps:
143157 - uses: actions/checkout@v2
144158
145− - uses: haskell/actions/setup@v1
146− with:
147− ghc-version: ${{ matrix.ghc_version }}
148− cabal-version: ${{ matrix.cabal_version }}
149−
150159 - uses: actions/cache@v1
151160 name: Cache ~/.cabal
152161 with:
@@ -162,6 +171,23 @@ jobs:
162171 if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi;
163172 chmod +x $PACKCHECK_LOCAL_PATH
164173
174+ os=$(uname -s -m)
175+ case "$os" in
176+ "Linux x86_64") GHCUP_ARCH="x86_64-linux" ;;
177+ "Darwin x86_64") GHCUP_ARCH="x86_64-apple-darwin" ;;
178+ *) echo "Unknown OS/Arch: $os"; exit 1;;
179+ esac
180+
181+ $CURL -sL -o ./ghcup https://downloads.haskell.org/~ghcup/0.1.17.4/${GHCUP_ARCH}-ghcup-0.1.17.4
182+ chmod +x ./ghcup
183+ if test "$GHCVER" = "head"
184+ then
185+ ./ghcup install ghc -u https://gitlab.haskell.org/ghc/ghc/-/jobs/artifacts/master/raw/ghc-x86_64-deb10-linux-integer-simple.tar.xz?job=validate-x86_64-linux-deb10-integer-simple head
186+ else
187+ ./ghcup install ghc $GHCVER
188+ fi
189+ ./ghcup set ghc $GHCVER
190+
165191 - name: Run tests
166192 run: |
167193 if test -n "$DOCTEST"