Skip to content

Bump tar from 0.4.44 to 0.4.45 in /rust #8

Bump tar from 0.4.44 to 0.4.45 in /rust

Bump tar from 0.4.44 to 0.4.45 in /rust #8

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint:
name: Lint and Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup tools with mise
uses: jdx/mise-action@v2
with:
install: true
cache: true
- name: Setup project
run: just ci-setup
- name: Run all checks
run: just check
rust-lint:
name: Rust Lint (clippy)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: rust
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run clippy
run: cd rust && cargo clippy --all-targets --all-features -- -D warnings
test:
name: Run Unit Tests
runs-on: ubuntu-latest
needs: [lint]
steps:
- uses: actions/checkout@v4
- name: Setup tools with mise
uses: jdx/mise-action@v2
with:
install: true
cache: true
- name: Setup project
run: just ci-setup
- name: Run unit tests
run: just test-unit
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: .coverage
retention-days: 7
if: always()
security:
name: Security Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pip-audit
run: pip install pip-audit
- name: Scan Python dependencies
run: pip-audit --requirement pyproject.toml
continue-on-error: true
build-binary:
name: Build binary ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
needs: [lint, rust-lint]
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: linux-x64
- os: ubuntu-24.04-arm
platform: linux-arm64
steps:
- uses: actions/checkout@v4
- name: Install system dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev pkg-config
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: rust
cache-directories: |
~/.cargo
- name: Setup tools with mise
uses: jdx/mise-action@v2
with:
install: true
cache: true
- name: Build binary
run: just ci-build-binary ${{ matrix.platform }}
- name: Upload binary
uses: actions/upload-artifact@v4
with:
name: binary-${{ matrix.platform }}
path: mlnative/bin/*
smoke-test:
name: Smoke Test
runs-on: ubuntu-latest
needs: build-binary
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Install system dependencies (runtime)
run: |
sudo apt-get update
sudo apt-get install -y \
mesa-vulkan-drivers \
libcurl4 \
libglfw3 \
libuv1 \
zlib1g
- name: Setup tools with mise
uses: jdx/mise-action@v2
with:
install: true
cache: true
- name: Setup project
run: just ci-setup
- name: Download binary
uses: actions/download-artifact@v4
with:
name: binary-linux-x64
path: mlnative/bin/
- name: Fix binary permissions
run: chmod +x mlnative/bin/mlnative-render-linux-x64
- name: Run smoke test
run: |
uv run python -c "
from mlnative import Map
with Map(256, 256) as m:
png = m.render(center=[0, 0], zoom=1)
assert len(png) > 1000, 'PNG too small'
assert png[:4] == b'\\x89PNG', 'Invalid PNG header'
print('Smoke test passed!')
"
integration-test:
name: Integration Tests
runs-on: ubuntu-latest
needs: build-binary
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install system dependencies (runtime)
run: |
sudo apt-get update
sudo apt-get install -y \
mesa-vulkan-drivers \
libcurl4 \
libglfw3 \
libuv1 \
zlib1g
- name: Setup tools with mise
uses: jdx/mise-action@v2
with:
install: true
cache: true
- name: Setup project
run: just ci-setup
- name: Download binary
uses: actions/download-artifact@v4
with:
name: binary-linux-x64
path: mlnative/bin/
- name: Fix binary permissions
run: chmod +x mlnative/bin/mlnative-render-linux-x64
- name: Run integration tests
run: uv run python -m pytest tests/ -v -m "integration" --tb=short