name: CI — Quick Test on PR / Push
on:
push:
branches: [main, dev, 'feature/**']
pull_request:
branches: [main]
jobs:
rust:
name: Rust tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ubuntu-cargo-ci-${{ hashFiles('Cargo.lock') }}
- run: cargo check && cargo clippy -- -D warnings && cargo test --lib -- --test-threads=1
python:
name: Python syntax check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Check Python syntax
working-directory: python
run: |
pip install build
python -c "
import ast, sys, pathlib
for f in pathlib.Path('overdrive').glob('*.py'):
try:
ast.parse(f.read_text(encoding='utf-8'))
print(f'✓ {f}')
except SyntaxError as e:
print(f'✗ {f}: {e}')
sys.exit(1)
"
python -m build
echo "✅ Python package builds successfully"
go-windows:
name: Go — Windows (no CGo)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Go vet (Windows, no CGo)
working-directory: go
env:
CGO_ENABLED: '0'
run: go vet ./...
go-linux:
name: Go — Linux (with CGo)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Go build + vet
working-directory: go
env:
CGO_ENABLED: '1'
run: go build ./... && go vet ./...
java:
name: Java compile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Maven compile
working-directory: java
run: mvn -B compile -Dmaven.test.skip=true --no-transfer-progress
nodejs:
name: Node.js syntax check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Check syntax
working-directory: nodejs
run: |
npm install --ignore-scripts
node --check index.js
echo "✅ Node.js syntax OK"
c-header:
name: C/C++ header check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate C header compiles
run: |
cat > /tmp/test_header.c << 'EOF'
#include "c/include/overdrive.h"
int main(void) {
/* Just check the header parses — no linker needed */
(void)sizeof(ODB);
return 0;
}
EOF
gcc -fsyntax-only -I. /tmp/test_header.c
echo "✅ C header compiles cleanly"