feat: initialize Task 3 - Enhanced Semantic Search Capabilities #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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."}' |