feat: initialize Task 3 - Enhanced Semantic Search Capabilities #31
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: Platform Validation | |
| on: | |
| # Trigger on pyproject.toml changes (when dependencies are modified) | |
| push: | |
| paths: | |
| - 'pyproject.toml' | |
| - 'pixi.lock' | |
| branches: [ main, development ] | |
| pull_request: | |
| paths: | |
| - 'pyproject.toml' | |
| - 'pixi.lock' | |
| branches: [ main, development ] | |
| # Allow manual trigger for testing | |
| workflow_dispatch: | |
| inputs: | |
| test_platform: | |
| description: 'Specific platform to test (optional)' | |
| required: false | |
| default: 'all' | |
| type: choice | |
| options: | |
| - 'all' | |
| - 'linux-64' | |
| - 'osx-64' | |
| - 'osx-arm64' | |
| - 'win-64' | |
| env: | |
| PIXI_VERSION: v0.49.0 | |
| jobs: | |
| # Memory-efficient platform validation | |
| validate-platforms: | |
| name: Validate ${{ matrix.platform }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false # Continue testing other platforms if one fails | |
| matrix: | |
| platform: [linux-64] # Only test supported platforms from pyproject.toml | |
| environment: [quality, ci] # Test main CI environments | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup pixi | |
| uses: prefix-dev/setup-pixi@v0.8.10 | |
| with: | |
| pixi-version: ${{ env.PIXI_VERSION }} | |
| cache: false # Disable cache to save memory | |
| manifest-path: pyproject.toml | |
| - name: Set memory limits | |
| run: | | |
| echo "🔧 Setting memory optimization..." | |
| echo "PIXI_CACHE_DIR=/tmp/pixi-cache" >> $GITHUB_ENV | |
| echo "CONDA_PKGS_DIRS=/tmp/conda-pkgs" >> $GITHUB_ENV | |
| echo "PIXI_SOLVER_THREADS=2" >> $GITHUB_ENV | |
| # Free up disk space | |
| sudo rm -rf /opt/hostedtoolcache | |
| sudo rm -rf /usr/local/lib/android | |
| sudo rm -rf /usr/share/dotnet | |
| echo "💾 Available memory:" | |
| free -h | |
| - name: Verify platform compatibility | |
| run: | | |
| echo "🎯 Testing platform: ${{ matrix.platform }}" | |
| echo "✅ Platform ${{ matrix.platform }} matches pyproject.toml configuration" | |
| echo "📋 Platform configuration:" | |
| grep -A5 -B5 "platforms.*=" pyproject.toml | |
| - name: Test dependency resolution for ${{ matrix.platform }} | |
| timeout-minutes: 30 | |
| run: | | |
| echo "🔍 Testing dependency resolution for ${{ matrix.platform }} environment ${{ matrix.environment }}..." | |
| # Test basic pixi functionality | |
| echo "✅ Testing pixi info..." | |
| pixi info | |
| echo "✅ Testing environment installation..." | |
| pixi install -e ${{ matrix.environment }} | |
| echo "✅ Dependency resolution successful for ${{ matrix.platform }}" | |
| - name: Test package availability | |
| run: | | |
| echo "📦 Testing critical package availability for ${{ matrix.platform }}..." | |
| # Test if critical packages are available on this platform | |
| CRITICAL_PACKAGES=("pytest" "ruff" "mypy" "bandit" "safety") | |
| for package in "${CRITICAL_PACKAGES[@]}"; do | |
| if pixi search $package --platform ${{ matrix.platform }} | grep -q $package; then | |
| echo "✅ $package available on ${{ matrix.platform }}" | |
| else | |
| echo "⚠️ $package might not be available on ${{ matrix.platform }}" | |
| fi | |
| done | |
| - name: Generate platform compatibility report | |
| if: always() | |
| run: | | |
| echo "📊 Platform Compatibility Report" > platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "=================================" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "**Platform**: ${{ matrix.platform }}" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "**Environment**: ${{ matrix.environment }}" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "**Status**: ${{ job.status }}" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "**Date**: $(date)" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| echo "" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| # Add dependency info | |
| echo "### Dependencies" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| pixi info -e ${{ matrix.environment }} | grep "Dependency count:" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md || echo "N/A" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| - name: Upload platform report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: platform-report-${{ matrix.platform }}-${{ matrix.environment }} | |
| path: platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md | |
| - name: Restore original pyproject.toml | |
| if: always() | |
| run: | | |
| mv pyproject.toml.backup pyproject.toml | |
| # Cross-platform compatibility summary | |
| compatibility-summary: | |
| name: Platform Compatibility Summary | |
| runs-on: ubuntu-latest | |
| needs: [validate-platforms] | |
| if: always() | |
| steps: | |
| - name: Download all platform reports | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: platform-report-* | |
| merge-multiple: true | |
| - name: Generate compatibility matrix | |
| run: | | |
| echo "# 🌍 Cross-Platform Compatibility Matrix" > compatibility-summary.md | |
| echo "" >> compatibility-summary.md | |
| echo "Generated on: $(date)" >> compatibility-summary.md | |
| echo "" >> compatibility-summary.md | |
| # Create matrix table | |
| echo "| Platform | quality | quality-extended | ci |" >> compatibility-summary.md | |
| echo "|----------|---------|------------------|-------|" >> compatibility-summary.md | |
| for platform in linux-64 osx-64 osx-arm64 win-64; do | |
| echo -n "| $platform |" >> compatibility-summary.md | |
| for env in quality quality-extended ci; do | |
| if [ -f "platform-report-$platform-$env.md" ]; then | |
| if grep -q "Status.*success" "platform-report-$platform-$env.md"; then | |
| echo -n " ✅ |" >> compatibility-summary.md | |
| else | |
| echo -n " ❌ |" >> compatibility-summary.md | |
| fi | |
| else | |
| echo -n " ❓ |" >> compatibility-summary.md | |
| fi | |
| done | |
| echo "" >> compatibility-summary.md | |
| done | |
| echo "" >> compatibility-summary.md | |
| echo "## 📋 Recommendations" >> compatibility-summary.md | |
| echo "" >> compatibility-summary.md | |
| echo "- ✅ **Supported**: Platform can be safely added to pyproject.toml" >> compatibility-summary.md | |
| echo "- ❌ **Unsupported**: Platform has dependency resolution issues" >> compatibility-summary.md | |
| echo "- ❓ **Unknown**: Platform validation did not complete" >> compatibility-summary.md | |
| echo "" >> compatibility-summary.md | |
| echo "### Next Steps" >> compatibility-summary.md | |
| echo "1. Add supported platforms to \`pyproject.toml\` incrementally" >> compatibility-summary.md | |
| echo "2. Test locally with \`pixi install --platform <platform>\`" >> compatibility-summary.md | |
| echo "3. Monitor CI stability after each platform addition" >> compatibility-summary.md | |
| - name: Upload compatibility summary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: compatibility-summary | |
| path: compatibility-summary.md | |
| - name: Comment on PR (if PR) | |
| if: github.event_name == 'pull_request' | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| const summary = fs.readFileSync('compatibility-summary.md', 'utf8'); | |
| github.rest.issues.createComment({ | |
| issue_number: context.issue.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body: summary | |
| }); | |
| # Suggest platform additions | |
| suggest-platform-updates: | |
| name: Suggest Platform Updates | |
| runs-on: ubuntu-latest | |
| needs: [validate-platforms] | |
| if: always() && github.event_name == 'push' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download compatibility summary | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: compatibility-summary | |
| path: . | |
| - name: Generate platform update suggestions | |
| run: | | |
| echo "🎯 Platform Update Suggestions" > suggestions.md | |
| echo "" >> suggestions.md | |
| # Check current platforms in pyproject.toml | |
| CURRENT_PLATFORMS=$(grep -o 'platforms = \[.*\]' pyproject.toml | sed 's/platforms = \[\(.*\)\]/\1/' | tr -d '"') | |
| echo "**Current platforms**: $CURRENT_PLATFORMS" >> suggestions.md | |
| echo "" >> suggestions.md | |
| # Suggest additions based on success | |
| echo "### ✅ Safe to Add" >> suggestions.md | |
| echo "Based on successful validation, these platforms can be added:" >> suggestions.md | |
| echo "" >> suggestions.md | |
| # This would be enhanced with actual validation results | |
| echo "```toml" >> suggestions.md | |
| echo "# Suggested pyproject.toml update:" >> suggestions.md | |
| echo 'platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"]' >> suggestions.md | |
| echo "```" >> suggestions.md | |
| echo "" >> suggestions.md | |
| echo "### ⚠️ Gradual Addition Recommended" >> suggestions.md | |
| echo "Add platforms one at a time to monitor CI stability:" >> suggestions.md | |
| echo "" >> suggestions.md | |
| echo "1. Add \`osx-64\` first (most compatible)" >> suggestions.md | |
| echo "2. Add \`osx-arm64\` second (Apple Silicon)" >> suggestions.md | |
| echo "3. Add \`win-64\` last (highest complexity)" >> suggestions.md | |
| - name: Upload suggestions | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: platform-suggestions | |
| path: suggestions.md | |
| - name: Add to step summary | |
| run: | | |
| echo "## 🌍 Platform Validation Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| cat compatibility-summary.md >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| cat suggestions.md >> $GITHUB_STEP_SUMMARY |