Skip to content

Commit 6f34f5c

Browse files
committed
Use private runners for ARM
The public ones still don't support docker.
1 parent 557e402 commit 6f34f5c

File tree

1 file changed

+145
-46
lines changed

1 file changed

+145
-46
lines changed

.github/workflows/release.yaml

+145-46
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,6 @@ jobs:
136136
, ADD_CABAL_ARGS: "--enable-split-sections"
137137
, runner: "ubuntu-latest"
138138
, ARCH: 64
139-
},
140-
{ image: "arm64v8/alpine:3.21"
141-
, installCmd: "apk add"
142-
, toolRequirements: "curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf zlib zlib-dev bzip2 bzip2-dev findutils"
143-
, DISTRO: "Alpine"
144-
, ARTIFACT: "aarch64-linux-alpine"
145-
, ADD_CABAL_ARGS: "--enable-split-sections"
146-
, runner: "ubuntu-22.04-arm"
147-
, ARCH: "ARM64"
148-
},
149-
{ image: "arm64v8/debian:10"
150-
, installCmd: "apt-get update && apt-get install -y"
151-
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
152-
, DISTRO: "Debian"
153-
, ARTIFACT: "aarch64-linux-deb10"
154-
, ADD_CABAL_ARGS: "--enable-split-sections"
155-
, runner: "ubuntu-22.04-arm"
156-
, ARCH: "ARM64"
157139
}
158140
]
159141

@@ -195,6 +177,62 @@ jobs:
195177
path: |
196178
./out-${{ matrix.platform.ARTIFACT }}-${{ matrix.ghc }}.tar
197179
180+
build-arm:
181+
name: Build ARM binary
182+
runs-on: [self-hosted, Linux, ARM64, maerwald]
183+
env:
184+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
185+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
186+
S3_HOST: ${{ secrets.S3_HOST }}
187+
TARBALL_EXT: tar.xz
188+
ADD_CABAL_ARGS: ""
189+
DEBIAN_FRONTEND: noninteractive
190+
TZ: Asia/Singapore
191+
DISTRO: Debian
192+
ARCH: "ARM64"
193+
ARTIFACT: "aarch64-linux-deb10"
194+
strategy:
195+
fail-fast: true
196+
matrix:
197+
ghc: ["9.12.2", "9.10.1", "9.8.4", "9.6.7", "9.4.8"]
198+
steps:
199+
- uses: docker://hasufell/arm64v8-debian-haskell:10
200+
name: Cleanup (aarch64 linux)
201+
with:
202+
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
203+
204+
- name: git config
205+
run: |
206+
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
207+
shell: bash
208+
209+
- name: Checkout code
210+
uses: actions/checkout@v4
211+
212+
- uses: docker://hasufell/arm64v8-debian-haskell:10
213+
name: Run build (aarch64 linux)
214+
with:
215+
args: bash .github/scripts/build.sh
216+
env:
217+
GHC_VERSION: ${{ matrix.ghc }}
218+
219+
- uses: docker://hasufell/arm64v8-debian-haskell:10
220+
name: Run build (aarch64 linux)
221+
with:
222+
args: bash .github/scripts/tar.sh
223+
env:
224+
GHC_VERSION: ${{ matrix.ghc }}
225+
226+
- if: always()
227+
name: Upload artifact
228+
uses: actions/upload-artifact@v4
229+
with:
230+
if-no-files-found: error
231+
retention-days: 2
232+
name: artifacts-arm-${{ matrix.ghc }}
233+
path: |
234+
./out-${{ matrix.platform.ARTIFACT }}-${{ matrix.ghc }}.tar
235+
198236
build-freebsd:
199237
name: Build binary (FreeBSD)
200238
runs-on: [self-hosted, FreeBSD, X64]
@@ -439,20 +477,6 @@ jobs:
439477
ARCH: 64
440478
ARTIFACT: "x86_64-linux-mint21.3"
441479
runs-on: [self-hosted, linux-space, maerwald]
442-
- image: "arm64v8/alpine:3.21"
443-
installCmd: "apk add"
444-
toolRequirements: "curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf zlib zlib-dev bzip2 bzip2-dev findutils"
445-
DISTRO: "Alpine"
446-
ARCH: ARM64
447-
ARTIFACT: "aarch64-linux-alpine"
448-
runs-on: [self-hosted, ARM64, maerwald]
449-
- image: arm64v8/debian:10
450-
installCmd: apt-get update && apt-get install -y
451-
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree
452-
DISTRO: Debian
453-
ARCH: ARM64
454-
ARTIFACT: "aarch64-linux-deb10"
455-
runs-on: [self-hosted, ARM64, maerwald]
456480

457481
container:
458482
image: ${{ matrix.image }}
@@ -501,6 +525,59 @@ jobs:
501525
with:
502526
name: artifacts-${{ matrix.ARTIFACT }}-*
503527

528+
bindist-arm:
529+
name: Tar linux bindists (arm)
530+
runs-on: [self-hosted, Linux, ARM64, maerwald]
531+
needs: ["build-arm"]
532+
env:
533+
TARBALL_EXT: tar.xz
534+
DEBIAN_FRONTEND: noninteractive
535+
TZ: Asia/Singapore
536+
ARCH: "ARM64"
537+
ARTIFACT: "aarch64-linux-deb10"
538+
steps:
539+
- uses: docker://hasufell/arm64v8-debian-haskell:10
540+
name: Cleanup (aarch64 linux)
541+
with:
542+
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
543+
544+
- name: git config
545+
run: |
546+
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
547+
shell: bash
548+
549+
- uses: actions/checkout@v4
550+
551+
- uses: actions/download-artifact@v4
552+
with:
553+
pattern: artifacts-arm-*
554+
merge-multiple: true
555+
path: ./
556+
557+
- uses: docker://hasufell/arm64v8-debian-haskell:10
558+
name: Unpack (aarch64)
559+
with:
560+
args: bash .github/scripts/untar.sh
561+
562+
- if: matrix.platform.ARCH == 'ARM64'
563+
uses: docker://hasufell/arm64v8-debian-haskell:10
564+
name: Create bindist (aarch64 linux)
565+
with:
566+
args: bash .github/scripts/bindist.sh
567+
568+
- name: Upload bindist
569+
uses: actions/upload-artifact@v4
570+
with:
571+
if-no-files-found: error
572+
name: bindists-arm
573+
path: |
574+
./out/*.tar.xz
575+
./out/plan.json/*
576+
577+
- uses: geekyeggo/delete-artifact@v5
578+
with:
579+
name: artifacts-arm-*
580+
504581
bindist-mac:
505582
name: Tar bindists
506583
runs-on: ${{ matrix.platform.os }}
@@ -765,20 +842,6 @@ jobs:
765842
ARTIFACT: "x86_64-linux-rocky9"
766843
ARCH: 64
767844
runs-on: ubuntu-latest
768-
- image: "arm64v8/alpine:3.21"
769-
installCmd: "apk add"
770-
toolRequirements: "curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf tree zlib zlib-dev bzip2 bzip2-dev findutils"
771-
DISTRO: "Alpine"
772-
ARTIFACT: "aarch64-linux-alpine"
773-
ARCH: ARM64
774-
runs-on: ubuntu-22.04-arm
775-
- image: arm64v8/debian:10
776-
installCmd: apt-get update && apt-get install -y
777-
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree
778-
DISTRO: Debian
779-
ARTIFACT: "aarch64-linux-deb10"
780-
ARCH: ARM64
781-
runs-on: ubuntu-22.04-arm
782845
container:
783846
image: ${{ matrix.image }}
784847
steps:
@@ -807,6 +870,42 @@ jobs:
807870
DISTRO: ${{ matrix.DISTRO }}
808871
ARCH: ${{ matrix.ARCH }}
809872

873+
test-arm:
874+
runs-on: [self-hosted, Linux, ARM64, maerwald]
875+
needs: ["bindist-arm"]
876+
env:
877+
TARBALL_EXT: tar.xz
878+
DEBIAN_FRONTEND: noninteractive
879+
TZ: Asia/Singapore
880+
DISTRO: Debian
881+
ARCH: "ARM64"
882+
ARTIFACT: "aarch64-linux-deb10"
883+
strategy:
884+
fail-fast: true
885+
steps:
886+
- uses: docker://hasufell/arm64v8-debian-haskell:10
887+
name: Cleanup (aarch64 linux)
888+
with:
889+
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
890+
891+
- name: git config
892+
run: |
893+
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
894+
shell: bash
895+
896+
- name: Checkout code
897+
uses: actions/checkout@v4
898+
899+
- uses: actions/download-artifact@v4
900+
with:
901+
name: bindists-arm
902+
path: ./out
903+
904+
- uses: docker://hasufell/arm64v8-debian-haskell:10
905+
name: Run test (aarch64 linux)
906+
with:
907+
args: bash .github/scripts/test.sh
908+
810909
test-mac:
811910
name: Test binary
812911
runs-on: ${{ matrix.platform.os }}

0 commit comments

Comments
 (0)