name: Reusable DB Examples Tests on: workflow_call: inputs: databases: required: false type: string default: "all" description: "Which databases to run (comma-separated or 'all')" python-version: required: false type: string default: "3.11.x" ci-image: required: false type: string default: '' secrets: LLM_MODEL: required: true LLM_ENDPOINT: required: true LLM_API_KEY: required: true LLM_ARGS: required: false LLM_API_VERSION: required: true EMBEDDING_MODEL: required: true EMBEDDING_API_KEY: required: true POSTGRES_PASSWORD: required: false NEO4J_API_URL: required: false NEO4J_API_KEY: required: false env: COGNEE_SKIP_CONNECTION_TEST: 'true' jobs: run-db-example-neo4j: name: "Neo4j DB Example Test" runs-on: ubuntu-22.04 if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'neo4j') }} steps: - name: Check out uses: actions/checkout@master - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} - name: Setup Neo4j with GDS uses: ./.github/actions/setup_neo4j id: neo4j - name: Run Neo4j Example env: ENV: 'dev' ENABLE_BACKEND_ACCESS_CONTROL: 'false' LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_DIMENSIONS: 300 EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} GRAPH_DATABASE_PROVIDER: "neo4j" GRAPH_DATABASE_URL: ${{ steps.neo4j.outputs.neo4j-url }} GRAPH_DATABASE_USERNAME: ${{ steps.neo4j.outputs.neo4j-username }} GRAPH_DATABASE_PASSWORD: ${{ steps.neo4j.outputs.neo4j-password }} run: | uv run python examples/database_examples/neo4j_example.py run-db-example-ladybug: name: "Ladybug DB Example Test" runs-on: ubuntu-22.04 container: ${{ inputs.ci-image != '' && fromJSON(format('{{"image":"{0}","credentials":{{"username":"{1}","password":"{2}"}}}}', inputs.ci-image, github.actor, github.token)) || null }} if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'ladybug') || contains(inputs.databases, 'kuzu') }} steps: - name: Check out uses: actions/checkout@v6 - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} - name: Dependencies already installed run: echo "Dependencies already installed in setup" - name: Run Ladybug Example env: ENV: 'dev' LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_DIMENSIONS: 300 EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} GRAPH_DATABASE_PROVIDER: "ladybug" run: | uv run python examples/database_examples/ladybug_example.py run-db-example-pgvector: name: "PostgreSQL PGVector DB Example Test" runs-on: ubuntu-22.04 container: ${{ inputs.ci-image != '' && fromJSON(format('{{"image":"{0}","credentials":{{"username":"{1}","password":"{2}"}}}}', inputs.ci-image, github.actor, github.token)) || null }} if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'postgres') }} services: postgres: image: ghcr.io/topoteretes/pgvector:pg17 credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} env: POSTGRES_USER: cognee POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} POSTGRES_DB: cognee_db options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - name: Check out uses: actions/checkout@v6 with: fetch-depth: 0 - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} extra-dependencies: "postgres" - name: Run PGVector Example env: ENV: 'dev' ENABLE_BACKEND_ACCESS_CONTROL: 'false' LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_DIMENSIONS: 300 EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} DB_HOST: ${{ inputs.ci-image != '' && 'postgres' || '127.0.0.1' }} run: | uv run python examples/database_examples/pgvector_example.py