1
1
name : Integration tests
2
2
3
3
on :
4
- pull_request :
5
4
push :
6
- branches :
7
- - master
8
- - stable
9
- - rc/**
10
5
tags :
11
6
- ' **'
12
7
workflow_dispatch :
13
8
14
- # Stack will use the value of the GH_TOKEN environment variable to authenticate
15
- # its requests of the GitHub REST API, providing a higher request rate limit.
16
- env :
17
- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
18
-
19
9
# As of 15 March 2025, ubuntu-latest and windows-latest come with Stack 3.3.1
20
10
# and GHC 9.12.1. However, macos-13 and macos-latest do not come with Haskell
21
11
# tools. windows-latest comes with NSIS 3.10, for which the default value of the
@@ -32,19 +22,12 @@ jobs:
32
22
fail-fast : false
33
23
matrix :
34
24
include :
25
+ - os : ubuntu-22.04-arm
26
+ release-args : " --alpine"
27
+ cache-bust : " 2024-05-17"
35
28
- os : ubuntu-latest
36
29
release-args : " --alpine"
37
30
cache-bust : " 2024-05-17"
38
- # On public preview since 16 January 2025
39
- - os : ubuntu-24.04-arm
40
- # Stack's project-level configuration (stack.yaml) specifies the
41
- # multi-architecture (including Linux/Aarch64) Docker image published
42
- # by Oliver Benz (@benz0li, on GitHub). That image comes with
43
- # Stack 3.3.1. (Note that the online documentation for
44
- # '--docker-stack-exe image' specifies that the host Stack and image
45
- # Stack must have the same version number.)
46
- release-args : " --alpine --stack-args --docker-stack-exe=image"
47
- cache-bust : " 2025-02-07b"
48
31
- os : windows-latest
49
32
release-args : " "
50
33
cache-bust : " 2024-05-17"
78
61
run : |
79
62
set -ex
80
63
81
- if [[ "${{ matrix.os }}" == "ubuntu-24 .04-arm" || "${{ matrix.os }}" == "macos-13" || "${{ matrix.os }}" == "macos-latest" ]]
64
+ if [[ "${{ matrix.os }}" == "ubuntu-22 .04-arm" || "${{ matrix.os }}" == "macos-13" || "${{ matrix.os }}" == "macos-latest" ]]
82
65
then
83
66
# ubuntu-24.04-arm, macos-13 and macos-latest do not include Haskell
84
67
# tools as at 2025-03-15.
@@ -153,8 +136,9 @@ jobs:
153
136
df -h
154
137
155
138
# Skip checks for Linux/AArch64, given checks for Linux/x86-64
156
- if [[ "${{ matrix.os }}" != "ubuntu-24.04-arm" ]]
157
- then
139
+ if [[ "${{ matrix.os }}" == "ubuntu-22.04-arm" ]] ; then
140
+ sed -i -e 's/[\s]*repo:.*/repo: quay.io\/benz0li\/ghc-musl:9.8.4-linux-arm64v8/' stack.yaml
141
+ else
158
142
# Do this in the same step as installing deps to get relevant env var modifications
159
143
stack etc/scripts/release.hs check ${{ matrix.release-args }}
160
144
fi
@@ -175,6 +159,45 @@ jobs:
175
159
name : ${{ runner.os }}-${{ runner.arch }}
176
160
path : _release/stack-*
177
161
162
+ freebsd-x64 :
163
+ name : FreeBSD X64
164
+ runs-on : [self-hosted, FreeBSD, X64]
165
+ steps :
166
+ - name : Checkout code
167
+ uses : actions/checkout@v4
168
+ with :
169
+ submodules : ' true'
170
+
171
+ - name : Install prerequisites
172
+ run : |
173
+ sudo sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
174
+ sudo pkg install -y ghc gcc curl git bash misc/compat10x misc/compat11x misc/compat12x gmake libiconv devel/stack
175
+ sudo tzsetup Etc/GMT
176
+ sudo adjkerntz -a
177
+
178
+ - uses : haskell/ghcup-setup@v1
179
+
180
+ - name : Install stack ghcup hook
181
+ run : |
182
+ set -eux
183
+ ghcup install stack --set latest
184
+ export STACK_ROOT="${GITHUB_WORKSPACE}"/.stack
185
+ mkdir -p $STACK_ROOT/hooks/
186
+ curl https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/hooks/stack/ghc-install.sh > $STACK_ROOT/hooks/ghc-install.sh
187
+ chmod +x $STACK_ROOT/hooks/ghc-install.sh
188
+ stack config set system-ghc false --global
189
+
190
+ - name : Run build
191
+ run : |
192
+ export STACK_ROOT="${GITHUB_WORKSPACE}"/.stack
193
+ export CABAL_DIR="$GITHUB_WORKSPACE/cabal"
194
+ stack etc/scripts/release.hs build --allow-dirty
195
+ - name : Upload bindist
196
+ uses : actions/upload-artifact@v4
197
+ with :
198
+ name : FreeBSD-X64
199
+ path : _release/stack-*
200
+
178
201
github-release :
179
202
name : Create GitHub release
180
203
permissions :
@@ -209,21 +232,21 @@ jobs:
209
232
with :
210
233
name : Linux-ARM64
211
234
path : _release
235
+ - name : Download FreeBSD/X64 artifact
236
+ uses : actions/download-artifact@v4
237
+ with :
238
+ name : FreeBSD-X64
239
+ path : _release
212
240
- name : Hash and sign assets
213
241
shell : bash
214
- env :
215
- RELEASE_SIGNING_KEY : ${{ secrets.RELEASE_SIGNING_KEY }}
216
242
run : |
217
243
set -e
218
- echo "$RELEASE_SIGNING_KEY"|gpg --import
219
244
cd _release
220
245
for asset in *; do
221
246
shasum -a 256 "$asset" >"$asset.sha256"
222
- gpg --digest-algo=sha512 --detach-sig --armor -u 0x575159689BEFB442 "$asset"
223
247
done
224
248
- name : Create GitHub release (final)
225
249
id : github_release_final
226
- if : " !startsWith(github.ref, 'refs/tags/rc/')"
227
250
228
251
env :
229
252
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
@@ -240,19 +263,7 @@ jobs:
240
263
[INSERT CONTRIBUTORS]
241
264
draft : true
242
265
prerelease : false
243
- - name : Create GitHub release (release candidate)
244
- id : github_release_rc
245
- if : " startsWith(github.ref, 'refs/tags/rc/')"
246
-
247
- env :
248
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
249
- with :
250
- body : |
251
- **Changes since v[INSERT PREVIOUS VERSION]:**
252
266
253
- [INSERT CHANGELOG]
254
- draft : true
255
- prerelease : true
256
267
- name : Upload assets to GitHub release (final)
257
268
if : " !startsWith(github.ref, 'refs/tags/rc/')"
258
269
uses : xresloader/upload-to-github-release@v1
@@ -264,14 +275,3 @@ jobs:
264
275
prerelease : false
265
276
overwrite : true
266
277
release_id : ${{ steps.github_release_final.outputs.id }}
267
- - name : Upload assets to GitHub release (release candidate)
268
- if : " startsWith(github.ref, 'refs/tags/rc/')"
269
- uses : xresloader/upload-to-github-release@v1
270
- env :
271
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
272
- with :
273
- file : " _release/*"
274
- draft : true
275
- prerelease : true
276
- overwrite : true
277
- release_id : ${{ steps.github_release_rc.outputs.id }}
0 commit comments