Skip to content

Commit

Permalink
github actions: changes to add more architecture support where possib…
Browse files Browse the repository at this point in the history
…le (arm64) to both increase coverage as well as attempt to diagnose build issues when creating wheels for pywincalc.
  • Loading branch information
StephenCzarnecki committed Oct 28, 2024
1 parent 42033be commit 731009f
Showing 1 changed file with 71 additions and 4 deletions.
75 changes: 71 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ env:
BUILD_TYPE: Release

jobs:
build:
windows:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2022, macos-12, macos-14, ubuntu-latest]
# arch: [x86, x64]
os: [windows-2019, windows-2022]
arch: [x86, x64]

steps:
- name: Checkout repository
Expand All @@ -31,4 +31,71 @@ jobs:

- name: Test
working-directory: ${{github.workspace}}/build
run: ctest -C RELEASE -V
run: ctest -C RELEASE -V

mac:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-latest]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Test
working-directory: ${{github.workspace}}/build
run: ctest -C RELEASE -V

linux:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-24.04]
arch: [x86_64, aarch64]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx for Multi-arch Builds
uses: docker/setup-buildx-action@v2

- name: Install QEMU for Multi-arch Emulation
uses: docker/setup-qemu-action@v2
with:
platforms: all

- name: Set up Docker Image
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker build --platform=linux/${{ matrix.arch }} -t my-cpp-build-env:$GITHUB_SHA -f Dockerfile.${{ matrix.os }} .
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Run CMake Build and Test
run: |
docker run --platform=linux/${{ matrix.arch }} my-cpp-build-env:$GITHUB_SHA /bin/bash -c "
mkdir build &&
cd build &&
cmake .. &&
cmake --config ${{env.BUILD_TYPE}} --build . &&
ctest -C RELEASE -V
"

0 comments on commit 731009f

Please sign in to comment.