name: Bindings
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions: read-all
jobs:
constant-parity:
name: Binding Constant Parity
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Check wrapper constants match sbom_tools.h
run: ./scripts/check-binding-constants.sh
dagger-rust-sdk:
name: Dagger CI (workspace check + staticlib + FFI tests + Go bindings)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 with:
toolchain: stable
- name: Cache Rust
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 - name: Run Dagger Rust SDK pipeline
run: cargo run --manifest-path dagger/rust-sdk/Cargo.toml -- ci-all
rust-ffi:
name: Rust FFI
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 with:
toolchain: stable
- name: Cache
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 - name: Build FFI library
run: bash ./scripts/build-bindings-mvp.sh
- name: Test FFI ABI
run: cargo test --locked --features ffi --test ffi_bindings
- name: Test ABI snapshot contracts
run: cargo test --locked --features ffi --test ffi_schema_snapshots
- name: Test FFI conformance (bidirectional ABI)
run: cargo test --locked --features ffi --test conformance_ffi
- name: Test FFI regression (PR run: cargo test --locked --features ffi --test ffi_regression
go-bindings:
name: Go Bindings (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 with:
toolchain: stable
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c with:
go-version: '1.22'
- name: Cache Rust
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 - name: Build Rust library
run: bash ./scripts/build-bindings-mvp.sh
- name: Test Go wrapper
working-directory: bindings/go
run: go test ./...
- name: Test Go dedup helpers
run: ./scripts/test-bindings-dedup.sh go
swift-bindings:
name: Swift Bindings
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 with:
toolchain: stable
- name: Build Rust library
run: bash ./scripts/build-bindings-mvp.sh
- name: Build and test Swift wrapper
working-directory: bindings/swift
run: swift test
- name: Test Swift dedup helpers
run: ./scripts/test-bindings-dedup.sh swift