Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
485b31d
feat: Add CI/CD workflows and bump version to 1.4.2
KingJoker Aug 10, 2026
51fa766
fix: remove GIT_SHALLOW from FetchContent and fix Gradle publishing s…
KingJoker Aug 10, 2026
dc2d023
feat: Implement fine-grained OS x Hardware Jars
KingJoker Aug 10, 2026
46f114f
fix: Resolve Vulkan glslc, Windows Vulkan SDK, and Ninja CUDA build i…
KingJoker Aug 10, 2026
0ac36c8
fix: Resolve hallucinated stale github action
KingJoker Aug 10, 2026
2c1f765
fix: Correct Ubuntu Vulkan glslc package name
KingJoker Aug 10, 2026
2fbbb7c
fix: Change windows VS version to 2022 so CUDA is happy
KingJoker Aug 10, 2026
9d746c6
docs: Add README badges
KingJoker Aug 10, 2026
7734ac7
Build: Add multi-arch CUDA target matrix\nfix: Track gradlew wrapper …
KingJoker Aug 10, 2026
64cb2b1
fix: Revert Cuda arch's virtual target to 90-virtual for CUDA 12.4 co…
KingJoker Aug 10, 2026
cee9af9
fix: Correct gradle maven-publish repo task names
KingJoker Aug 11, 2026
598dd4a
fix: Update Maven Central publishing URL from legacy
KingJoker Aug 11, 2026
7f2d37d
fix: Rename core artifact to libargus-core
KingJoker Aug 12, 2026
d6211d3
feat(ci): migrate Maven Central publishing to Central Publisher Porta…
KingJoker Aug 16, 2026
a2854e3
fix(ci): evaluate secret existence within shell script instead of ste…
KingJoker Aug 16, 2026
b58062f
refactor(build): strip legacy ossrh references and clean up nmcp cred…
KingJoker Aug 16, 2026
ddef045
fix(build): migrate from nmcp settings plugin to root aggregation plu…
KingJoker Aug 16, 2026
67aa405
fix(build): add mavenCentral repository to subprojects for nmcp-tasks…
KingJoker Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .geminiignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ build/
cmake-build-debug/
*.log
models/
native-binaries/
41 changes: 41 additions & 0 deletions .github/docker/Dockerfile.builder
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive
ENV JAVA_HOME=/usr/local/jdk-22
ENV PATH=${JAVA_HOME}/bin:${PATH}

# Install core system toolchain, build dependencies, ccache, and Vulkan development headers
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
gcc \
g++ \
clang \
cmake \
ninja-build \
ccache \
git \
curl \
wget \
ca-certificates \
pkg-config \
libvulkan-dev \
vulkan-tools \
mesa-vulkan-drivers \
glslc \
libshaderc-dev \
nvidia-cuda-toolkit \
&& rm -rf /var/lib/apt/lists/*

# Install OpenJDK 22 for Project Panama (FFM) Java 22+ API compatibility
RUN wget -q https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz -O /tmp/jdk22.tar.gz \
&& mkdir -p /usr/local/jdk-22 \
&& tar -xzf /tmp/jdk22.tar.gz -C /usr/local/jdk-22 --strip-components=1 \
&& rm /tmp/jdk22.tar.gz

# Configure global ccache directory
ENV CCACHE_DIR=/root/.cache/ccache
RUN mkdir -p ${CCACHE_DIR}

WORKDIR /workspace

CMD ["/bin/bash"]
195 changes: 195 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
name: Continuous Integration Matrix

on:
push:
branches:
- '*'
pull_request:
branches:
- main
workflow_dispatch:


concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# =========================================================================
# 1. Linux Compilation & Testing Matrix
# =========================================================================
build-test-linux:
name: Linux (${{ matrix.target }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: cpu
cmake_flags: "-DGGML_CUDA=OFF -DGGML_METAL=OFF"
- target: cuda
cmake_flags: "-DGGML_CUDA=ON -DGGML_METAL=OFF"
- target: rocm
cmake_flags: "-DGGML_CUDA=OFF -DGGML_METAL=OFF"
- target: vulkan
cmake_flags: "-DGGML_CUDA=OFF -DGGML_VULKAN=ON"

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Java 22 (Panama FFM)
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22'

- name: Install System Build Dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential cmake ninja-build ccache \
libvulkan-dev vulkan-tools mesa-vulkan-drivers glslc libshaderc-dev nvidia-cuda-toolkit


- name: Set up ccache
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ${{ runner.os }}-linux-${{ matrix.target }}-ccache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-linux-${{ matrix.target }}-ccache-

- name: Configure CMake
run: |
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DARGUS_PORTABLE=ON \
${{ matrix.cmake_flags }}

- name: Compile Native Binary
run: |
cmake --build build --config Release -j $(nproc)

- name: Execute C++ Unit Tests
run: |
./build/bin/test_libargus

- name: Execute JUnit Panama FFM Integration Tests
run: |
./gradlew test --info

# =========================================================================
# 2. Windows MSVC Compilation & Testing Matrix
# =========================================================================
build-test-windows:
name: Windows (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: cpu
os: windows-latest
cmake_flags: "-DGGML_CUDA=OFF"
- target: cuda
os: windows-2022
cmake_flags: "-DGGML_CUDA=ON -DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler"
- target: vulkan
os: windows-latest
cmake_flags: "-DGGML_CUDA=OFF -DGGML_VULKAN=ON"


steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Java 22 (Panama FFM)
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22'

- name: Set up MSVC Developer Environment
uses: ilammy/msvc-dev-cmd@v1

- name: Set up CUDA Toolkit (Windows)
if: matrix.target == 'cuda'
uses: Jimver/cuda-toolkit@v0.2.19
with:
cuda: '12.4.1'
method: 'network'

- name: Set up Vulkan SDK (Windows)
if: matrix.target == 'vulkan'
run: |
choco install vulkan-sdk -y
VULKAN_DIR=$(ls -d /c/VulkanSDK/* | tail -n 1)
echo "VULKAN_SDK=$VULKAN_DIR" >> $GITHUB_ENV
echo "$VULKAN_DIR/Bin" >> $GITHUB_PATH


- name: Configure CMake (Ninja)
run: |
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_flags }}


- name: Compile Native Binary (Release)
run: |
cmake --build build --config Release -j 4

- name: Execute C++ Unit Tests
run: |
.\build\bin\Release\test_libargus.exe

- name: Execute JUnit Panama FFM Integration Tests
run: |
.\gradlew.bat test --info

# =========================================================================
# 3. macOS Apple Silicon Compilation & Testing Matrix
# =========================================================================
build-test-macos:
name: macOS Arm64 Metal
runs-on: macos-14

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Java 22 (Panama FFM)
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22'

- name: Install ccache
run: |
brew install ccache ninja

- name: Set up ccache
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ${{ runner.os }}-macos-metal-ccache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-macos-metal-ccache-

- name: Configure CMake (Metal)
run: |
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_METAL=ON \
-DGGML_CUDA=OFF

- name: Compile Native Binary
run: |
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

- name: Execute C++ Unit Tests
run: |
./build/bin/test_libargus

- name: Execute JUnit Panama FFM Integration Tests
run: |
./gradlew test --info
51 changes: 51 additions & 0 deletions .github/workflows/docker-builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build & Publish GHCR Builder Image

on:
push:
branches:
- '*'
paths:
- '.github/docker/Dockerfile.builder'
- '.github/workflows/docker-builder.yml'
workflow_dispatch:


permissions:
contents: read
packages: write

jobs:
build-and-push:
name: Build & Push GHCR Docker Builder Image
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Downcase Image Repository Name
id: image_name
run: |
echo "IMAGE_ID=ghcr.io/${{ github.repository_owner }}/libargus-builder" | tr '[:upper:]' '[:lower:]' >> $GITHUB_ENV

- name: Build and Push Docker Image
uses: docker/build-push-action@v6
with:
context: .
file: .github/docker/Dockerfile.builder
push: true
tags: |
${{ env.IMAGE_ID }}:latest
${{ env.IMAGE_ID }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
Loading
Loading