Skip to content

Build on Alpine Linux (Chroot) #44

Build on Alpine Linux (Chroot)

Build on Alpine Linux (Chroot) #44

Workflow file for this run

# .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