feat: initialize Task 3 - Enhanced Semantic Search Capabilities #114
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: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| test-type: [unit, integration, e2e] | |
| env: | |
| ENVIRONMENT: ci | |
| PYTHONUNBUFFERED: 1 | |
| PIXI_ENV: ci # Kept: This job explicitly targets the 'ci' environment for its primary installation. | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup pixi with cache fallback | |
| id: setup-pixi | |
| uses: prefix-dev/setup-pixi@v0.8.10 | |
| with: | |
| pixi-version: latest | |
| cache: true | |
| manifest-path: pyproject.toml | |
| - name: Secondary cache fallback when pixi cache fails | |
| if: steps.setup-pixi.outputs.cache-hit != 'true' | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.pixi/cache | |
| ~/.cache/pip | |
| .pixi | |
| key: pixi-fallback-${{ runner.os }}-${{ hashFiles('pyproject.toml') }} | |
| restore-keys: | | |
| pixi-fallback-${{ runner.os }}- | |
| - name: Verify pixi installation | |
| run: | | |
| echo "Verifying pixi setup completed successfully..." | |
| pixi info | |
| - name: Verify pixi environment | |
| run: | | |
| echo "Verifying pixi ci environment..." | |
| pixi run --environment ci python --version | |
| pixi run --environment ci pip --version | |
| pixi run --environment ci pytest --version | |
| - name: Install project in editable mode | |
| run: | | |
| pixi run --environment ci pip install -e . | |
| - name: Select tests by marker | |
| id: select-tests | |
| shell: bash | |
| 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 using pixi | |
| run: | | |
| echo "Running tests with pixi in ci environment..." | |
| if [[ -n "$PYTEST_MARK" ]]; then | |
| pixi run --environment ci pytest tests/ -m "$PYTEST_MARK" --json-report --json-report-file=pytest-${{ matrix.test-type }}.json | |
| else | |
| pixi run --environment ci 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 | |
| shell: bash | |
| 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 }} | |
| shell: bash | |
| 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."}' |