Bump tar from 0.4.44 to 0.4.45 in /rust #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |