Skip to content

ci: fix tox.ini for integration tests #9982

ci: fix tox.ini for integration tests

ci: fix tox.ini for integration tests #9982

Workflow file for this run

name: Python CI
on:
push:
branches: [ main, playground ]
pull_request:
paths:
- "src/**"
- "tests/**"
- "tutorials/**"
- "pyproject.toml"
- "packages/**"
- "tox.ini"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
group: test-python-${{ github.head_ref }}
cancel-in-progress: true
env:
pip-version: 24.2
OPENAI_API_KEY: "sk-fake-openai-key" # fake openai key so that llama_index doesn't download huggingface embeddings
jobs:
changes:
name: Filter Changes
runs-on: ubuntu-latest
outputs:
phoenix: ${{ steps.filter.outputs.phoenix }}
phoenix_evals: ${{ steps.filter.outputs.phoenix_evals }}
phoenix_otel: ${{ steps.filter.outputs.phoenix_otel }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
phoenix:
- "src/**"
- "tests/**"
- "tutorials/**"
- "pyproject.toml"
- "tox.ini"
phoenix_evals:
- "packages/phoenix-evals/**"
- "tox.ini"
phoenix_otel:
- "packages/phoenix-otel/**"
- "tox.ini"
phoenix-evals:
name: Phoenix Evals
runs-on: ${{ matrix.os }}
needs: changes
if: ${{ needs.changes.outputs.phoenix_evals == 'true' }}
strategy:
matrix:
py: [ 3.8, 3.12 ]
os: [ ubuntu-latest, windows-latest, macos-13 ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
- uses: astral-sh/setup-uv@v3
with:
version: 0.4.18
- run: uv tool install tox --with tox-uv
- run: tox run -e ci_phoenix_evals
phoenix-otel:
name: Phoenix OTel
runs-on: ${{ matrix.os }}
needs: changes
if: ${{ needs.changes.outputs.phoenix_otel == 'true' }}
strategy:
matrix:
py: [ 3.8, 3.12 ]
os: [ ubuntu-latest, windows-latest, macos-13 ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
- uses: astral-sh/setup-uv@v3
with:
version: 0.4.18
- run: uv tool install tox --with tox-uv
- run: tox run -e ci_phoenix_otel
lint:
name: Lint Phoenix
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.phoenix == 'true' }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip==${{ env.pip-version }}
pip install hatch
- name: Proto codegen
run: |
hatch run proto:recompile
git diff --exit-code
- name: Check format
run: |
hatch run style:check
- name: Check types
run: |
hatch run type:check
- name: Gql codegen
run: |
hatch run gql:build
git diff --exit-code
- name: Export OpenAPI schema
run: |
hatch run openapi:build
git diff --exit-code
- name: Check notebooks have cleaned output and metadata
run: |
hatch run notebooks:clean
git diff --exit-code
unit-test:
name: Unit Tests
runs-on: ${{ matrix.os }}
needs: changes
if: ${{ needs.changes.outputs.phoenix == 'true' }}
strategy:
matrix:
py: [ 3.9 ]
os: [ ubuntu-latest, windows-latest, macos-13 ]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up python ${{ matrix.py }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip==${{ env.pip-version }}
pip install hatch
- name: Install PostgreSQL (Ubuntu)
if: runner.os == 'Linux'
run: sudo apt-get -yqq install postgresql
- name: Run tests with PostgreSQL
if: runner.os == 'Linux'
run: hatch run test:tests --run-postgres
- name: Run tests without PostgreSQL
if: runner.os != 'Linux'
run: hatch run test:tests
integration-test:
name: Integration Tests
runs-on: ${{ matrix.os }}
needs: changes
if: ${{ needs.changes.outputs.phoenix == 'true' }}
strategy:
matrix:
py: [ 3.9, 3.12 ]
db: [ sqlite, postgresql ]
os: [ ubuntu-latest, windows-latest, macos-13 ]
exclude:
- db: postgresql
os: windows-latest
- db: postgresql
os: macos-13
env:
CI_TEST_DB_BACKEND: ${{ matrix.db }}
services:
postgres:
# Applying this workaround: https://github.com/actions/runner/issues/822
image: ${{ (matrix.db == 'postgresql') && 'postgres:12' || '' }}
env:
POSTGRES_PASSWORD: phoenix
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
- uses: astral-sh/setup-uv@v3
with:
version: 0.4.18
enable-cache: true
cache-dependency-glob: |
pyproject.toml
requirements/ci.txt
requirements/integration-tests.txt
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: uv tool install tox --with tox-uv
- run: tox run -e ci_integration_tests