name: CI on: pull_request: branches: [ main ] jobs: build-python-packages: runs-on: ubuntu-latest strategy: matrix: include: - name: hindsight-all path: hindsight - name: hindsight-api path: hindsight-api - name: hindsight-client path: hindsight-clients/python steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 with: enable-cache: true - name: Set up Python uses: actions/setup-python@v5 with: python-version-file: ".python-version" - name: Build ${{ matrix.name }} working-directory: ./${{ matrix.path }} run: uv build build-typescript-client: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies working-directory: ./hindsight-clients/typescript run: npm ci - name: Build TypeScript client working-directory: ./hindsight-clients/typescript run: npm run build build-rust-cli: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git hindsight-cli/target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Build CLI working-directory: hindsight-cli run: cargo build --release lint-helm-chart: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Helm uses: azure/setup-helm@v4 with: version: 'latest' - name: Lint Helm chart run: helm lint helm/hindsight build-docker-images: runs-on: ubuntu-latest strategy: matrix: include: - target: api-only name: api - target: cp-only name: control-plane - target: standalone name: standalone steps: - uses: actions/checkout@v4 - name: Free Disk Space uses: jlumbroso/free-disk-space@main with: tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build ${{ matrix.name }} image uses: docker/build-push-action@v6 with: context: . file: docker/standalone/Dockerfile target: ${{ matrix.target }} push: false cache-from: type=gha cache-to: type=gha,mode=max test-api: runs-on: ubuntu-latest needs: [build-python-packages] services: postgres: image: pgvector/pgvector:pg16 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: hindsight_test options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 env: HINDSIGHT_API_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/hindsight_test HINDSIGHT_API_LLM_PROVIDER: groq HINDSIGHT_API_LLM_API_KEY: ${{ secrets.GROQ_API_KEY }} HINDSIGHT_API_LLM_MODEL: openai/gpt-oss-20b steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 with: enable-cache: true - name: Set up Python uses: actions/setup-python@v5 with: python-version-file: ".python-version" - name: Install dependencies working-directory: ./hindsight-api run: uv sync --extra test - name: Run tests working-directory: ./hindsight-api run: uv run pytest tests -v --ignore=tests/test_fact_extraction_quality.py