diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..4728c17 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,83 @@ +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"