added basic CI implimentation with github actions to automatically build and test code on ubuntu, fedorah, and macOS (arm64 and x86)
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
name: Build and Test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
jobs:
|
|
build-and-test:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, fedora-latest, archlinux, macos-latest]
|
|
include:
|
|
- os: macos-latest
|
|
arch: x64
|
|
- os: macos-latest
|
|
arch: arm64
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up dependencies
|
|
run: |
|
|
# Common setup for Linux
|
|
if [[ "$RUNNER_OS" == "Linux" ]]; then
|
|
if [[ "$matrix.os" == "ubuntu-latest" ]]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y cmake build-essential meson ninja-build python3 python3-pip libgtest-dev
|
|
# Compile gtest manually for Ubuntu
|
|
cd /usr/src/gtest && sudo cmake . && sudo make && sudo cp *.a /usr/lib
|
|
elif [[ "$matrix.os" == "fedora-latest" ]]; then
|
|
sudo dnf install -y cmake gcc-c++ make meson ninja-build gtest gtest-devel
|
|
elif [[ "$matrix.os" == "archlinux" ]]; then
|
|
sudo pacman -Syu --noconfirm cmake gcc make meson ninja python gtest
|
|
fi
|
|
# Common setup for macOS
|
|
elif [[ "$RUNNER_OS" == "macOS" ]]; then
|
|
brew update
|
|
brew install cmake meson ninja python gtest
|
|
fi
|
|
|
|
- name: Run build and tests
|
|
run: ./mk
|
|
|