name: Release on: push: tags: - 'v*' env: CARGO_TERM_COLOR: always CARGO_INCREMENTAL: 0 jobs: build: strategy: fail-fast: false matrix: include: # macOS ARM64 (native on Apple Silicon runners) - target: aarch64-apple-darwin os: macos-latest # macOS x86_64 (uses older Intel-based runner) - target: x86_64-apple-darwin os: macos-13 # Linux x86_64 - target: x86_64-unknown-linux-gnu os: ubuntu-latest # Linux ARM64 (uses cross for proper cross-compilation) - target: aarch64-unknown-linux-gnu os: ubuntu-latest use_cross: true runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install cross if: matrix.use_cross run: cargo install cross --git https://github.com/cross-rs/cross - name: Install dependencies (Ubuntu) if: matrix.os == 'ubuntu-latest' && !matrix.use_cross run: | sudo apt-get update sudo apt-get install -y libssl-dev pkg-config - name: Install dependencies (macOS) if: startsWith(matrix.os, 'macos') run: | brew install openssl@3 echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV - name: Build MCP Server (native) if: "!matrix.use_cross" run: | cargo build --release --package vestige-mcp --target ${{ matrix.target }} - name: Build MCP Server (cross) if: matrix.use_cross run: | cross build --release --package vestige-mcp --target ${{ matrix.target }} - name: Package run: | mkdir -p dist cp target/${{ matrix.target }}/release/vestige-mcp dist/ cp target/${{ matrix.target }}/release/vestige dist/ 2>/dev/null || true cd dist && tar czf vestige-mcp-${{ matrix.target }}.tar.gz vestige-mcp vestige 2>/dev/null || tar czf vestige-mcp-${{ matrix.target }}.tar.gz vestige-mcp - name: Upload artifact uses: actions/upload-artifact@v4 with: name: vestige-mcp-${{ matrix.target }} path: dist/vestige-mcp-${{ matrix.target }}.tar.gz release: needs: build runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Create Release uses: softprops/action-gh-release@v1 with: files: artifacts/**/*.tar.gz generate_release_notes: true