Skip to content

Commit

Permalink
Use jirutka/setup-alpine github action to run exotics arch
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex-PLACET committed Dec 19, 2024
1 parent c015596 commit 113c97a
Showing 1 changed file with 76 additions and 90 deletions.
166 changes: 76 additions & 90 deletions .github/workflows/qemu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,124 +7,110 @@ on:

jobs:
build_job:
runs-on: ubuntu-22.04
name: Build on ${{ matrix.target.arch }} / ${{ matrix.target.distro }} / ${{ matrix.config.name }} / date-polyfill ${{ matrix.target.date-polyfill}}
runs-on: ubuntu-24.04
name: Build on ${{ matrix.target.arch }} / ${{ matrix.config.name }} / date-polyfill ${{ matrix.target.date-polyfill}}

strategy:
matrix:
target:
- { arch: armv6, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: armv7, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: aarch64, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: aarch64, distro: alpine_latest, date-polyfill: 'OFF' }
- { arch: riscv64, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: s390x, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: s390x, distro: alpine_latest, date-polyfill: 'OFF' }
- { arch: ppc64le, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: ppc64le, distro: alpine_latest, date-polyfill: 'OFF' }
- { arch: armv7, date-polyfill: 'ON' }
- { arch: aarch64, date-polyfill: 'ON' }
- { arch: aarch64, date-polyfill: 'OFF'}
- { arch: riscv64, date-polyfill: 'ON' }
- { arch: s390x, date-polyfill: 'ON' }
- { arch: s390x, date-polyfill: 'OFF' }
- { arch: ppc64le, date-polyfill: 'ON' }
- { arch: ppc64le, date-polyfill: 'OFF' }

config:
- { name: Debug }
- { name: Release }
# env:
# CCACHE_CACHE_DIR: /mnt/ccache_cache
# HOST_CCACHE_CACHE_DIR: host_ccache_cache

steps:
- name: Install binfmt-support
run: |
sudo apt-get update
sudo apt-get install binfmt-support
# - name: Create ccache cache dir
# run: |
# mkdir -p ${{ env.HOST_CCACHE_CACHE_DIR }}

# - name: Cache builds
# uses: actions/cache@v4
# with:
# key: ${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-${{ steps.date.outputs.time }}
# path: ${{ env.HOST_CCACHE_CACHE_DIR }}
# restore-keys: |
# ${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-

- name: Set up Alpine Linux for ${{ matrix.target.arch }}
uses: jirutka/setup-alpine@v1
id: alpine-target
with:
branch: v3.20
arch: ${{ matrix.target.arch }}
packages: >
ccache
cmake
date-dev
doctest-dev
g++
linux-headers
make
musl-dev
samurai
tzdata
# volumes: |
# ${{ env.HOST_CCACHE_CACHE_DIR }}:${{ env.CCACHE_CACHE_DIR }}
shell-name: alpine.sh

- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get current date
id: date
uses: Kaven-Universe/github-action-current-date-time@v1
with:
format: "YYYY-MM-DD_HH-mm-ss-SSS"

- name: Cache builds
uses: actions/cache@v4
with:
key: ${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-${{ steps.date.outputs.time }}
path: ccache_cache
restore-keys: |
${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-
- uses: uraimo/run-on-arch-action@v2
name: Build artifact
id: build
with:
arch: ${{matrix.target.arch}}
distro: ${{matrix.target.distro}}

# Not required, but speeds up builds
githubToken: ${{github.token}}

setup: |
mkdir -p "${PWD}/artifacts"
mkdir -p "${PWD}/ccache_cache"
- name: Configuring sparrow
run: cmake -G Ninja -Bbuild \
-DCMAKE_BUILD_TYPE:STRING=${{matrix.config.name}} \
-DUSE_DATE_POLYFILL=${{matrix.target.date-polyfill}} \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
-DUSE_LARGE_INT_PLACEHOLDERS=ON \
-DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING
shell: alpine.sh {0}

# Mount the artifacts directory as /artifacts
# Mount the ccache_cache directory as /ccache_cache
dockerRunArgs: |
--volume "${PWD}/artifacts:/artifacts" --volume "${PWD}/ccache_cache:/ccache_cache"
- name: Building sparrow library
run: cmake --build build --config ${{matrix.config.name}} --target sparrow
shell: alpine.sh {0}

# The shell to run commands with in the container
shell: /bin/sh
- name: Building sparrow tests
run: cmake --build build --config ${{matrix.config.name}} --target test_sparrow_lib
shell: alpine.sh {0}

# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
case "${{matrix.target.distro}}" in
ubuntu*|bookworm)
apt-get update -q -y
apt-get install -q -y git cmake make doctest-dev libhowardhinnant-date-dev tzdata g++ ninja-build build-essential ccache
;;
fedora*)
dnf -y update
dnf -y groupinstall "Development Tools"
dnf -y install git which cmake make doctest-devel date date-devel tzdata gcc-c++ ninja-build ccache
;;
alpine*)
apk update
apk add git cmake make doctest-dev date-dev tzdata g++ samurai ccache linux-headers musl-dev
;;
esac
- name: Running sparrow examples
run: cmake --build build --config ${{matrix.config.name}} --target run_examples
shell: alpine.sh {0}

run: |
CCACHE_DIR=/ccache_cache
export CCACHE_DIR
export CCACHE_MAXSIZE=1G
CC=gcc
export CC
CXX=g++
export CXX
echo "Configuring sparrow"
cmake -G Ninja -Bbuild \
-DCMAKE_BUILD_TYPE:STRING=${{matrix.config.name}} \
-DUSE_DATE_POLYFILL=${{matrix.target.date-polyfill}} \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
-DUSE_LARGE_INT_PLACEHOLDERS=ON \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING
cd build
echo "Building sparrow library"
cmake --build . --config ${{matrix.config.name}} --target sparrow
echo "Building sparrow tests"
cmake --build . --config ${{matrix.config.name}} --target test_sparrow_lib
echo "Running sparrow examples"
cmake --build . --config ${{matrix.config.name}} --target run_examples
echo "Running sparrow tests"
cmake --build . --config ${{matrix.config.name}} --target run_tests_with_junit_report
ccache --show-stats
- name: Running sparrow tests
run: cmake --build build --config ${{matrix.config.name}} --target run_tests_with_junit_report
shell: alpine.sh {0}

- name: Upload test results
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: test_sparrow_lib_report_Linux_${{matrix.target.distro}}_${{matrix.target.arch}}_${{matrix.config.name}}_date-polyfill_${{matrix.target.date-polyfill}}
path: |
build/test/test_sparrow_lib_report_doctest.xml
build/test/test_sparrow_lib_report_catch2.xml
${{ steps.alpine-target.outputs.root-path }}/build/test/test_sparrow_lib_report_doctest.xml
${{ steps.alpine-target.outputs.root-path }}/build/test/test_sparrow_lib_report_catch2.xml
if-no-files-found: error

0 comments on commit 113c97a

Please sign in to comment.