Files
2026-06-14 19:18:31 -04:00

84 lines
2.4 KiB
YAML

name: CI
on: [push, pull_request]
jobs:
pre-commit:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4
- name: Install pre-commit
run: pipx install pre-commit
- name: Run pre-commit
run: ~/.local/bin/pre-commit run --all-files --show-diff-on-failure
build:
strategy:
fail-fast: false
matrix:
include:
- name: clang-amd64
runner: ubuntu-latest-amd64
cmake_args: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
upload: true
- name: clang-arm64
runner: ubuntu-latest-arm64
cmake_args: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
upload: true
- name: gcc-amd64
runner: ubuntu-latest-amd64
cmake_args: -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
upload: false
- name: gcc-arm64
runner: ubuntu-latest-arm64
cmake_args: -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
upload: false
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
clang \
cmake \
devscripts \
rpm
- name: Build
run: |
cmake -S . -B build ${{ matrix.cmake_args }}
make -C build -j "$(nproc)"
- name: Test
run: |
cd build
ctest --output-on-failure -j "$(nproc)" --timeout 90
- name: Package
if: matrix.upload
run: |
cd build
cpack -G DEB
cpack -G RPM
- name: Upload packages to MinIO
if: matrix.upload
env:
MINIO_ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY }}
MC_HOST_minio: https://${{ secrets.MINIO_ACCESS_KEY }}:${{ secrets.MINIO_SECRET_KEY }}@minio.weaselab.dev
run: |
if [ -z "$MINIO_ACCESS_KEY" ]; then
echo "MinIO credentials not configured; skipping upload"
exit 0
fi
curl -Ls "https://dl.min.io/client/mc/release/linux-$(dpkg --print-architecture)/mc" \
-o /tmp/mc && chmod +x /tmp/mc
dest="minio/jenkins/weaseljson/${{ gitea.run_number }}/${{ matrix.name }}/"
/tmp/mc cp build/*.deb "$dest"
/tmp/mc cp build/*.rpm "$dest"