| name: Run Pytest | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| paths: | |
| - api/** | |
| - docker/** | |
| - .github/workflows/api-tests.yml | |
| concurrency: | |
| group: api-tests-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| name: API Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Poetry | |
| uses: abatilo/actions-poetry@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: poetry | |
| cache-dependency-path: api/poetry.lock | |
| - name: Check Poetry lockfile | |
| run: | | |
| poetry check -C api --lock | |
| poetry show -C api | |
| - name: Install dependencies | |
| run: poetry install -C api --with dev | |
| - name: Check dependencies in pyproject.toml | |
| run: poetry run -C api bash dev/pytest/pytest_artifacts.sh | |
| - name: Run Unit tests | |
| run: poetry run -C api bash dev/pytest/pytest_unit_tests.sh | |
| - name: Run ModelRuntime | |
| run: poetry run -C api bash dev/pytest/pytest_model_runtime.sh | |
| - name: Run Tool | |
| run: poetry run -C api bash dev/pytest/pytest_tools.sh | |
| - name: Set up dotenvs | |
| run: | | |
| cp docker/.env.example docker/.env | |
| cp docker/middleware.env.example docker/middleware.env | |
| - name: Expose Service Ports | |
| run: sh .github/workflows/expose_service_ports.sh | |
| - name: Set up Sandbox | |
| uses: hoverkraft-tech/compose-action@v2.0.2 | |
| with: | |
| compose-file: | | |
| docker/docker-compose.middleware.yaml | |
| services: | | |
| sandbox | |
| ssrf_proxy | |
| - name: Run Workflow | |
| run: poetry run -C api bash dev/pytest/pytest_workflow.sh | |