-
Notifications
You must be signed in to change notification settings - Fork 3
94 lines (78 loc) · 2.85 KB
/
alpine.yaml
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
# .github/workflows/alpine.yaml
name: Build on Alpine Linux (Chroot)
on:
workflow_dispatch: {}
push:
branches: [ test ]
jobs:
build:
strategy:
fail-fast: false
matrix:
target: [
"x86_64", "x86", "aarch64", "armhf", "ppc64le", "armv7"
]
compiler:
- { apk: "g++", GCC: "gcc", GXX: "g++" }
- { apk: "clang14", GCC: "clang-14", GXX: "clang++-14" }
- { apk: "clang15", GCC: "clang-15", GXX: "clang++-15" }
- { apk: "clang16", GCC: "clang-16", GXX: "clang++-16" }
- { apk: "clang17", GCC: "clang-17", GXX: "clang++-17" }
name: Build on Alpine Linux for ${{matrix.target}} with ${{matrix.compiler.GCC}}
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
steps:
- name: Machine Information
run: |
lscpu; free -h; df -h .
- name: System Information
run: |
date; uname -a; uptime; cat /etc/os-release; ls -C /boot || :
- name: Context Information
run: |
tty || :; id; printf %s\\n "$SHELL"; printf %s\\n "$PATH"; pwd
- name: Setup Host System
run: |
set -x
sudo apt-get update
sudo apt-get install qemu-user-static
- name: Setup Alpine Linux Chroot
run: |
wget -q -O- https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/${{matrix.target}}/alpine-minirootfs-3.19.1-${{matrix.target}}.tar.gz |
(sudo mkdir /srv/alpine && sudo tar xz -C /srv/alpine)
(for d in dev proc sys; do sudo mount --rbind -o ro {,/srv/alpine}/"$d"; done)
(for d in run tmp; do sudo mount {-t,}tmpfs /srv/alpine/"$d"; done)
sudo cp -L /etc/resolv.conf /srv/alpine/etc
sudo chroot /srv/alpine su - <<'END'
uname -a && pwd && printf %s\\n "$PATH"
END
sudo chroot /srv/alpine su - <<'END'
set -x; addgroup -g127 docker && adduser -D -u1001 -Gdocker -s/bin/ash runner && delgroup runner docker
END
(set -x; sudo mount --rbind . /srv/alpine/home/runner)
sudo chroot /srv/alpine su - <<'END'
apk update && apk add ${{matrix.compiler.apk}} libc-dev make
END
- name: Build Tools Information
run: |
sudo chroot /srv/alpine su - <<'END'
make --version; ${{matrix.compiler.GCC}} --version
END
- name: Checkout
uses: actions/checkout@v4
- name: Run Make (and Check)
run: |
sudo chroot /srv/alpine su - runner <<'END'
make -j3 run \
CFLAGS='-Wno-psabi -O3 -fno-stack-protector -fcf-protection=none' \
GCC='${{matrix.compiler.GCC}}' \
GXX='${{matrix.compiler.GXX}}' \
MARCH=
END
- name: Upload Results
uses: actions/upload-artifact@v4
with:
name: build-${{matrix.target}}-${{matrix.compiler.GCC}}
path: build