name: CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
name: Build & Test (Rust, Python, Node, Go)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Install Linux system dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libclang-dev
- name: Set up Rust
uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec
- name: Build Rust Core
run: cargo build --release --verbose
- name: Run Rust Tests
run: cargo test --release --verbose
- name: Set up Python
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 with:
python-version: '3.11'
- name: Test Python Binding
run: |
python -m pip install --upgrade pip
python -c "import sys; sys.path.insert(0, 'bindings/python'); from rasgapdf import version; print('Python FFI Version:', version())"
- name: Set up Node.js
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 with:
node-version: '22'
- name: Test Node.js Binding
run: |
cd bindings/nodejs
npm install
node -e "const { version } = require('./index.js'); console.log('Node FFI Version:', version());"
- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e with:
go-version: '1.22'
- name: Test Go Binding
run: |
cd bindings/go
go run cmd/main.go