Skip to content

feat: initialize Task 3 - Enhanced Semantic Search Capabilities #32

feat: initialize Task 3 - Enhanced Semantic Search Capabilities

feat: initialize Task 3 - Enhanced Semantic Search Capabilities #32

Workflow file for this run

name: Test Matrix
on:
push:
branches: [main, development]
paths-ignore:
- '**.md'
- '**/docs/**'
pull_request:
branches: [main, development]
paths-ignore:
- '**.md'
- '**/docs/**'
workflow_dispatch:
jobs:
test-matrix:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
test-type: [unit, integration, e2e]
env:
ENVIRONMENT: ci
PYTHONUNBUFFERED: 1
PIXI_ENV: ci
steps:
- uses: actions/checkout@v4
- name: Setup pixi with cache fallback
id: setup-pixi
uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.49.0
cache: true
continue-on-error: true
- name: Ensure .pixi environment exists
run: |
if [ ! -d ".pixi" ]; then
echo "No .pixi directory found, initializing pixi environment..."
pixi run || pixi install --locked || pixi install || true
fi
- name: Install dependencies (pixi) with retry
run: |
n=0
until [ "$n" -ge 3 ]
do
pixi install --locked && break
n=$((n+1))
echo "pixi install failed, retrying ($n/3)..."
sleep 5
done
- name: Activate pixi environment and install dev dependencies (robust)
run: |
eval "$(pixi shell --env-hook bash)"
n=0
until [ "$n" -ge 3 ]
do
pip install -e .[dev,mcp,ml] && break
n=$((n+1))
echo "pip install -e .[dev,mcp,ml] failed, retrying ($n/3)..."
sleep 5
done
- name: Verify pixi environment
run: |
eval "$(pixi shell --env-hook bash)"
which python
which pip
python --version
pip --version
- name: Select tests by marker
id: select-tests
run: |
if [[ "${{ matrix.test-type }}" == "unit" ]]; then
echo "PYTEST_MARK=unit" >> $GITHUB_ENV
elif [[ "${{ matrix.test-type }}" == "integration" ]]; then
echo "PYTEST_MARK=integration" >> $GITHUB_ENV
elif [[ "${{ matrix.test-type }}" == "e2e" ]]; then
echo "PYTEST_MARK=e2e" >> $GITHUB_ENV
fi
- name: Run selected tests (with pixi shell activation)
run: |
eval "$(pixi shell --env-hook bash)"
which pytest || (echo "pytest not found!"; exit 127)
pytest --version
if [[ -n "$PYTEST_MARK" ]]; then
pytest tests/ -m "$PYTEST_MARK" --json-report --json-report-file=pytest-${{ matrix.test-type }}.json
else
pytest tests/ --json-report --json-report-file=pytest-${{ matrix.test-type }}.json
fi
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.python-version }}-${{ matrix.test-type }}
path: pytest-${{ matrix.test-type }}.json
aggregate-results:
needs: test-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Aggregate and compare test results
run: |
find ./artifacts -name "*.json" -exec cat {} + > all-results.json
# Optionally, add custom aggregation/comparison logic here
- name: Upload aggregated results
uses: actions/upload-artifact@v4
with:
name: aggregated-test-results
path: all-results.json
- name: Notify Results (GitHub API)
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.sha }} \
-d '{"state": "success", "context": "Test Matrix", "description": "Matrix tests complete."}'