11name : Integration tests
22
33on :
4- pull_request :
54 push :
6- branches :
7- - master
8- - stable
9- - rc/**
105 tags :
116 - ' **'
127 workflow_dispatch :
138
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-
199# As of 15 March 2025, ubuntu-latest and windows-latest come with Stack 3.3.1
2010# and GHC 9.12.1. However, macos-13 and macos-latest do not come with Haskell
2111# tools. windows-latest comes with NSIS 3.10, for which the default value of the
@@ -32,19 +22,12 @@ jobs:
3222 fail-fast : false
3323 matrix :
3424 include :
25+ - os : ubuntu-22.04-arm
26+ release-args : " --alpine"
27+ cache-bust : " 2024-05-17"
3528 - os : ubuntu-latest
3629 release-args : " --alpine"
3730 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"
4831 - os : windows-latest
4932 release-args : " "
5033 cache-bust : " 2024-05-17"
7861 run : |
7962 set -ex
8063
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" ]]
8265 then
8366 # ubuntu-24.04-arm, macos-13 and macos-latest do not include Haskell
8467 # tools as at 2025-03-15.
@@ -153,8 +136,9 @@ jobs:
153136 df -h
154137
155138 # 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
158142 # Do this in the same step as installing deps to get relevant env var modifications
159143 stack etc/scripts/release.hs check ${{ matrix.release-args }}
160144 fi
@@ -175,6 +159,45 @@ jobs:
175159 name : ${{ runner.os }}-${{ runner.arch }}
176160 path : _release/stack-*
177161
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+
178201 github-release :
179202 name : Create GitHub release
180203 permissions :
@@ -209,21 +232,21 @@ jobs:
209232 with :
210233 name : Linux-ARM64
211234 path : _release
235+ - name : Download FreeBSD/X64 artifact
236+ uses : actions/download-artifact@v4
237+ with :
238+ name : FreeBSD-X64
239+ path : _release
212240 - name : Hash and sign assets
213241 shell : bash
214- env :
215- RELEASE_SIGNING_KEY : ${{ secrets.RELEASE_SIGNING_KEY }}
216242 run : |
217243 set -e
218- echo "$RELEASE_SIGNING_KEY"|gpg --import
219244 cd _release
220245 for asset in *; do
221246 shasum -a 256 "$asset" >"$asset.sha256"
222- gpg --digest-algo=sha512 --detach-sig --armor -u 0x575159689BEFB442 "$asset"
223247 done
224248 - name : Create GitHub release (final)
225249 id : github_release_final
226- if : " !startsWith(github.ref, 'refs/tags/rc/')"
227250228251 env :
229252 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
@@ -240,19 +263,7 @@ jobs:
240263 [INSERT CONTRIBUTORS]
241264 draft : true
242265 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]:**
252266
253- [INSERT CHANGELOG]
254- draft : true
255- prerelease : true
256267 - name : Upload assets to GitHub release (final)
257268 if : " !startsWith(github.ref, 'refs/tags/rc/')"
258269 uses : xresloader/upload-to-github-release@v1
@@ -264,14 +275,3 @@ jobs:
264275 prerelease : false
265276 overwrite : true
266277 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