name: Release on: release: types: [created] workflow_dispatch: inputs: tag: description: 'Release tag to build (e.g., v1.1.1)' required: true permissions: contents: write env: CARGO_TERM_COLOR: always jobs: build: name: Build ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest archive: tar.gz - target: x86_64-pc-windows-msvc os: windows-latest archive: zip - target: x86_64-apple-darwin os: macos-latest archive: tar.gz - target: aarch64-apple-darwin os: macos-latest archive: tar.gz steps: - name: Checkout uses: actions/checkout@v5 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Build run: cargo build --package vestige-mcp --release --target ${{ matrix.target }} - name: Package (Unix) if: matrix.os != 'windows-latest' run: | cd target/${{ matrix.target }}/release tar -czf ../../../vestige-mcp-${{ matrix.target }}.tar.gz vestige-mcp vestige vestige-restore - name: Package (Windows) if: matrix.os == 'windows-latest' shell: pwsh run: | cd target/${{ matrix.target }}/release Compress-Archive -Path vestige-mcp.exe,vestige.exe,vestige-restore.exe -DestinationPath ../../../vestige-mcp-${{ matrix.target }}.zip - name: Upload to Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.event.inputs.tag || github.ref_name }} files: vestige-mcp-${{ matrix.target }}.${{ matrix.archive }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}