portail 0.1.0

Unified proxy/gateway: AI Gateway + MCP Gateway + CDN cache
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -D warnings
  CARGO_INCREMENTAL: 0
  SCCACHE_GHA_ENABLED: "true"

jobs:
  check:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          components: clippy, rustfmt

      - name: Cache cargo
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo-

      - uses: mozilla-actions/sccache-action@v0.0.7

      - name: Check
        run: cargo check --locked

      - name: Test
        run: cargo test --locked

      - name: Clippy
        run: cargo clippy --locked --all-targets

      - name: Format
        run: cargo fmt --check

  nix:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: DeterminateSystems/nix-installer-action@v16
      - uses: DeterminateSystems/magic-nix-cache-action@v8
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cache/nix
            /nix/store
          key: nix-${{ hashFiles('flake.lock') }}
      - name: Flake check
        run: nix flake check --all-systems

  python:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: plugins/portail-mcp
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
          cache: pip
      - name: Install
        run: pip install -e ".[dev]"
      - name: Lint
        run: pip install ruff && ruff check