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"