name: Release on: push: tags: - "v*" workflow_dispatch: permissions: contents: write jobs: build: name: Build ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - target: x86_64-macos os: macos-latest rust-target: x86_64-apple-darwin cross-packages: "" - target: aarch64-macos os: macos-latest rust-target: aarch64-apple-darwin cross-packages: "" - target: x86_64-linux-gnu os: ubuntu-latest rust-target: x86_64-unknown-linux-gnu cross-packages: "" - target: aarch64-linux-gnu os: ubuntu-latest rust-target: aarch64-unknown-linux-gnu cross-packages: gcc-aarch64-linux-gnu - target: x86_64-windows-gnu os: ubuntu-latest rust-target: x86_64-pc-windows-gnu cross-packages: mingw-w64 - target: aarch64-windows-gnu os: ubuntu-latest rust-target: aarch64-pc-windows-gnullvm cross-packages: mingw-w64 - target: wasm32-freestanding os: ubuntu-latest rust-target: wasm32-unknown-unknown cross-packages: "" - target: wasm32-wasi os: ubuntu-latest rust-target: wasm32-wasip1 cross-packages: "" - target: x86_64-linux-musl os: ubuntu-latest rust-target: x86_64-unknown-linux-musl cross-packages: "" - target: aarch64-linux-musl os: ubuntu-latest rust-target: aarch64-unknown-linux-musl cross-packages: "" - target: aarch64-linux-android os: ubuntu-latest rust-target: aarch64-linux-android cross-packages: "" - target: aarch64-ios os: macos-latest rust-target: aarch64-apple-ios cross-packages: "" steps: - uses: actions/checkout@v4 - name: Setup Zig uses: mlugg/setup-zig@v2 with: version: 0.17.0-dev.1398+cb5635714 - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.rust-target }} - name: Install cross-compilers if: matrix.cross-packages != '' run: | sudo apt-get update sudo apt-get install -y ${{ matrix.cross-packages }} - name: Build Package run: | cd lib zig build -Dbuild-rust -Dtarget=${{ matrix.target }} -Doptimize=ReleaseSafe - name: Package artifact run: | cd lib mkdir -p dist tar -czf "dist/${{ matrix.target }}.tar.gz" -C zig-out/lib . - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.target }} path: lib/dist/${{ matrix.target }}.tar.gz retention-days: 1 release: name: Create Release needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: dist merge-multiple: true - name: Release uses: softprops/action-gh-release@v2 with: files: dist/*.tar.gz generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}