HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/chroma/.github/workflows/pr.yml
name: PR checks
on:
  pull_request:
    branches:
      - main
      - '**'

jobs:
  # GitHub only provides a way to do path filtering at the workflow level rather than the job level.
  # This allows us to selectively run jobs based on changed paths.
  paths-filter:
    name: Get changed paths
    runs-on: ubuntu-latest
    outputs:
      outside-docs: ${{ steps.changes.outputs.outside-docs }}
    steps:
      - name: Get changed paths
        id: changes
        uses: dorny/paths-filter@v3
        with:
          filters: |
            outside-docs:
              - '!docs/**'

  python-tests:
    name: Python tests
    needs: paths-filter
    if: needs.paths-filter.outputs.outside-docs == 'true'
    uses: ./.github/workflows/_python-tests.yml
    with:
      property_testing_preset: 'fast'

  python-vulnerability-scan:
    name: Python vulnerability scan
    needs: paths-filter
    if: needs.paths-filter.outputs.outside-docs == 'true'
    uses: ./.github/workflows/_python-vulnerability-scan.yml

  javascript-client-tests:
    name: JavaScript client tests
    needs: paths-filter
    if: needs.paths-filter.outputs.outside-docs == 'true'
    uses: ./.github/workflows/_javascript-client-tests.yml

  rust-tests:
    name: Rust tests
    needs: paths-filter
    if: needs.paths-filter.outputs.outside-docs == 'true'
    uses: ./.github/workflows/_rust-tests.yml

  go-tests:
    name: Go tests
    needs: paths-filter
    if: needs.paths-filter.outputs.outside-docs == 'true'
    uses: ./.github/workflows/_go-tests.yml

  check-title:
    name: Check PR Title
    runs-on: ubuntu-latest
    steps:
        - name: Check PR Title
          uses: Slashgear/action-check-pr-title@v4.3.0
          with:
            regexp: '\[(ENH|BUG|DOC|TST|BLD|PERF|TYP|CLN|CHORE|RELEASE)\].*'
            helpMessage: "Please tag your PR title. See https://docs.trychroma.com/contributing#contributing-code-and-ideas. You must push new code to this PR for this check to run again."
        - name: Comment explaining failure
          if: failure()
          uses: actions/github-script@v6
          with:
            script: |
              github.rest.issues.createComment({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                body: 'Please tag your PR title with one of: \\[ENH | BUG | DOC | TST | BLD | PERF | TYP | CLN | CHORE\\]. See https://docs.trychroma.com/contributing#contributing-code-and-ideas'
              })

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
      - name: Install pre-commit
        shell: bash
        run: python -m pip install -r requirements_dev.txt
      - name: Run pre-commit
        shell: bash
        run: |
          pre-commit run --all-files trailing-whitespace
          pre-commit run --all-files mixed-line-ending
          pre-commit run --all-files end-of-file-fixer
          pre-commit run --all-files requirements-txt-fixer
          pre-commit run --all-files check-xml
          pre-commit run --all-files check-merge-conflict
          pre-commit run --all-files check-case-conflict
          pre-commit run --all-files check-docstring-first
          pre-commit run --all-files black
          pre-commit run --all-files flake8
          pre-commit run --all-files prettier
          pre-commit run --all-files check-yaml
      - name: Cargo fmt check
        shell: bash
        run: cargo fmt -- --check

  # This job exists for our branch protection rule.
  # We want to require status checks to pass before merging, but the set of
  # checks that run for any given PR is dynamic based on the files changed.
  # When creating a branch protection rule, you have to specify a static list
  # of checks.
  # So since this job always runs, we can specify it in the branch protection rule.
  all-required-pr-checks-passed:
    if: always()
    needs:
    - python-tests
    - python-vulnerability-scan
    - javascript-client-tests
    - rust-tests
    - go-tests
    - check-title
    - lint
    runs-on: ubuntu-latest
    steps:
    - name: Decide whether the needed jobs succeeded or failed
      uses: re-actors/alls-green@release/v1
      with:
        jobs: ${{ toJSON(needs) }}