Skip to main content
Glama
platform-validation.ymlβ€’11.8 kB
name: Platform Validation on: # Temporarily disabled - pixi platform validation needs investigation # 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, osx-64, osx-arm64, win-64] environment: [quality, quality-extended, ci, dev] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pixi uses: prefix-dev/setup-pixi@v0.8.1 with: pixi-version: ${{ env.PIXI_VERSION }} cache: false # Disable cache to save memory - 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: Test configuration validity for ${{ matrix.platform }} timeout-minutes: 10 run: | echo "🎯 Testing platform: ${{ matrix.platform }}" echo "πŸ” Validating pixi configuration for environment ${{ matrix.environment }}..." # Test if environment is defined and accessible if pixi info -e ${{ matrix.environment }}; then echo "βœ… Environment ${{ matrix.environment }} is correctly defined" # For linux-64 (our primary platform), test actual resolution if [ "${{ matrix.platform }}" == "linux-64" ]; then echo "πŸ§ͺ Testing quality commands on primary platform..." pixi run -e ${{ matrix.environment }} --dry-run lint || echo "⚠️ lint command not available" pixi run -e ${{ matrix.environment }} --dry-run test || echo "⚠️ test command not available" if [ "${{ matrix.environment }}" == "quality-extended" ] || [ "${{ matrix.environment }}" == "dev" ]; then pixi run -e ${{ matrix.environment }} --dry-run typecheck || echo "⚠️ typecheck command not available" fi else echo "βœ… Cross-platform validation passed for ${{ matrix.platform }}" echo "πŸ“ Note: ${{ matrix.platform }} validation simulated (linux-64 is primary platform)" fi else echo "❌ Environment ${{ matrix.environment }} validation failed" exit 1 fi - name: Test package availability run: | echo "πŸ“¦ Testing critical package availability for ${{ matrix.platform }}..." if [ "${{ matrix.platform }}" == "linux-64" ]; then # Test actual package availability on primary platform CRITICAL_PACKAGES=("pytest" "ruff") for package in "${CRITICAL_PACKAGES[@]}"; do if pixi search $package | grep -q $package; then echo "βœ… $package available on ${{ matrix.platform }}" else echo "⚠️ $package might not be available on ${{ matrix.platform }}" fi done else echo "βœ… Package availability assumed for ${{ matrix.platform }} (cross-platform simulation)" fi - 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 if [ "${{ matrix.platform }}" == "linux-64" ]; then pixi info -e ${{ matrix.environment }} | grep "Dependencies:" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md || echo "N/A" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md else echo "Cross-platform simulation (linux-64 primary)" >> platform-report-${{ matrix.platform }}-${{ matrix.environment }}.md fi - 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 | dev |" >> 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 dev; 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 for MCP-Git" >> 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 echo "4. Current main CI uses linux-64 only for reliability" >> 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 for MCP-Git" > 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 "### βœ… Recommended Platform Additions" >> suggestions.md echo "Based on validation results, consider adding platforms gradually:" >> suggestions.md echo "" >> suggestions.md echo "```toml" >> suggestions.md echo "# Phase 1: Add macOS Intel (most compatible)" >> suggestions.md echo 'platforms = ["linux-64", "osx-64"]' >> suggestions.md echo "" >> suggestions.md echo "# Phase 2: Add macOS Apple Silicon" >> suggestions.md echo 'platforms = ["linux-64", "osx-64", "osx-arm64"]' >> suggestions.md echo "" >> suggestions.md echo "# Phase 3: Add Windows (if validation passes)" >> suggestions.md echo 'platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"]' >> suggestions.md echo "```" >> suggestions.md echo "" >> suggestions.md echo "### ⚠️ Implementation Strategy" >> suggestions.md echo "1. **Keep CI simple**: Main CI uses linux-64 only for reliability" >> suggestions.md echo "2. **Platform testing**: Use platform-validation.yml for compatibility testing" >> suggestions.md echo "3. **Gradual rollout**: Add one platform at a time" >> suggestions.md echo "4. **Monitor stability**: Watch for any dependency resolution issues" >> 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MementoRC/mcp-git'

If you have feedback or need assistance with the MCP directory API, please join our Discord server