forked from weaselab/weaseljson
Add CI
This commit is contained in:
@@ -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"
|
||||||
Reference in New Issue
Block a user