Build on Alpine Linux (Chroot) #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .github/workflows/alpine.yaml | |
name: Build on Alpine | |
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 |