feat(admin): fire GitHub dispatch on model PATCH (infra#153) #2112
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: Tests | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| CARGO_INCREMENTAL: 0 # Faster CI builds | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu_large_x64 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| components: rustfmt, clippy | |
| - name: Cache Rust dependencies | |
| uses: swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| - name: Run cargo fmt | |
| run: cargo fmt --all -- --check | |
| - name: Run cargo clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| test: | |
| name: Test Suite | |
| runs-on: ubuntu_large_x64 | |
| environment: Cloud API test env | |
| services: | |
| postgres: | |
| image: postgres:15 | |
| env: | |
| POSTGRES_USER: postgres | |
| POSTGRES_PASSWORD: postgres | |
| POSTGRES_DB: platform_api | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| --shm-size=256mb | |
| ports: | |
| - 5432:5432 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Increase PostgreSQL max connections | |
| run: | | |
| # 16 parallel tests * 4 pool connections = 64, but allow headroom for spikes. | |
| docker exec ${{ job.services.postgres.id }} \ | |
| psql -U postgres -c "ALTER SYSTEM SET max_connections = 150;" | |
| docker restart ${{ job.services.postgres.id }} | |
| for i in $(seq 1 30); do | |
| docker exec ${{ job.services.postgres.id }} pg_isready -U postgres && break | |
| sleep 1 | |
| done | |
| if ! docker exec ${{ job.services.postgres.id }} pg_isready -U postgres; then | |
| echo "PostgreSQL did not become ready after restart within 30 seconds" >&2 | |
| exit 1 | |
| fi | |
| - name: Install Rust | |
| uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - name: Cache Rust dependencies | |
| uses: swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Run unit tests | |
| run: cargo nextest run --lib --bins | |
| env: | |
| POSTGRES_PRIMARY_APP_ID: ${{ secrets.POSTGRES_PRIMARY_APP_ID }} | |
| DATABASE_HOST: localhost | |
| DATABASE_PORT: 5432 | |
| DATABASE_NAME: platform_api | |
| DATABASE_USERNAME: postgres | |
| DATABASE_PASSWORD: postgres | |
| DATABASE_MAX_CONNECTIONS: 5 | |
| DATABASE_TLS_ENABLED: "false" | |
| MODEL_DISCOVERY_SERVER_URL: ${{ secrets.MODEL_DISCOVERY_SERVER_URL }} | |
| MODEL_DISCOVERY_API_KEY: ${{ secrets.MODEL_DISCOVERY_API_KEY }} | |
| AUTH_ADMIN_DOMAINS: ${{ secrets.AUTH_ADMIN_DOMAINS }} | |
| AUTH_ENCODING_KEY: ${{ secrets.AUTH_ENCODING_KEY }} | |
| BRAVE_SEARCH_PRO_API_KEY: ${{ secrets.BRAVE_SEARCH_PRO_API_KEY }} | |
| DEV: "true" | |
| # All e2e tests are compiled into a single binary (tests/e2e_all/) for faster linking. | |
| # Isolation comes from UUID-scoped orgs/workspaces/keys, not separate databases. | |
| - name: Run integration tests | |
| run: cargo nextest run --test e2e_all | |
| env: | |
| POSTGRES_PRIMARY_APP_ID: ${{ secrets.POSTGRES_PRIMARY_APP_ID }} | |
| DATABASE_HOST: localhost | |
| DATABASE_PORT: 5432 | |
| DATABASE_NAME: platform_api | |
| DATABASE_USERNAME: postgres | |
| DATABASE_PASSWORD: postgres | |
| DATABASE_MAX_CONNECTIONS: 5 | |
| DATABASE_TLS_ENABLED: "false" | |
| MODEL_DISCOVERY_SERVER_URL: ${{ secrets.MODEL_DISCOVERY_SERVER_URL }} | |
| MODEL_DISCOVERY_API_KEY: ${{ secrets.MODEL_DISCOVERY_API_KEY }} | |
| AUTH_ENCODING_KEY: ${{ secrets.AUTH_ENCODING_KEY }} | |
| AUTH_ADMIN_DOMAINS: ${{ secrets.AUTH_ADMIN_DOMAINS }} | |
| BRAVE_SEARCH_PRO_API_KEY: ${{ secrets.BRAVE_SEARCH_PRO_API_KEY }} | |
| TEST_DATABASE_NAME: platform_api_e2e | |
| RUST_LOG: debug | |
| DEV: "true" | |
| - name: Run vLLM integration tests | |
| run: cargo test --test integration_tests -- --nocapture | |
| env: | |
| VLLM_BASE_URL: ${{ secrets.VLLM_BASE_URL }} | |
| VLLM_API_KEY: ${{ secrets.VLLM_API_KEY }} | |
| # Only build release on main branch, not on PRs | |
| - name: Build release | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| run: cargo build --release | |
| env: | |
| POSTGRES_PRIMARY_APP_ID: ${{ secrets.POSTGRES_PRIMARY_APP_ID }} | |
| DATABASE_HOST: localhost | |
| DATABASE_PORT: 5432 | |
| DATABASE_NAME: platform_api | |
| DATABASE_USERNAME: postgres | |
| DATABASE_PASSWORD: postgres | |
| MODEL_DISCOVERY_SERVER_URL: ${{ secrets.MODEL_DISCOVERY_SERVER_URL }} | |
| AUTH_ENCODING_KEY: ${{ secrets.AUTH_ENCODING_KEY }} |