name: Release on: push: tags: - "v*.*.*" permissions: contents: write env: CARGO_TERM_COLOR: always jobs: release: name: Release (${{ matrix.target }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-gnu binary: fetchx archive: fetchx-linux-x86_64.tar.gz - os: ubuntu-latest target: aarch64-unknown-linux-gnu binary: fetchx archive: fetchx-linux-aarch64.tar.gz - os: macos-latest target: x86_64-apple-darwin binary: fetchx archive: fetchx-macos-x86_64.tar.gz - os: macos-latest target: aarch64-apple-darwin binary: fetchx archive: fetchx-macos-aarch64.tar.gz steps: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install cross-compilation tools if: matrix.target == 'aarch64-unknown-linux-gnu' run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu - name: Build release binary run: cargo build --release --target ${{ matrix.target }} env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc - name: Package binary run: | cd target/${{ matrix.target }}/release tar czf ../../../${{ matrix.archive }} ${{ matrix.binary }} cd ../../.. - name: Upload release asset uses: softprops/action-gh-release@v2 with: files: ${{ matrix.archive }} generate_release_notes: true