name: Build release binaries on: workflow_dispatch: workflow_call: env: CARGO_TERM_COLOR: always jobs: build-binaries: strategy: fail-fast: false matrix: target: - x86_64-unknown-linux-musl - i686-unknown-linux-musl - armv7-unknown-linux-musleabihf - aarch64-unknown-linux-musl - x86_64-pc-windows-msvc - x86_64-apple-darwin - aarch64-apple-darwin include: - os: ubuntu-latest target: x86_64-unknown-linux-musl artifact_path: target/x86_64-unknown-linux-musl/release/homedisk release_name: x86_64-unknown-linux-musl cross: true strip: true cargo_flags: "" - os: ubuntu-latest target: i686-unknown-linux-musl artifact_path: target/i686-unknown-linux-musl/release/homedisk release_name: i686-unknown-linux-musl cross: true strip: true cargo_flags: "" - os: ubuntu-latest target: armv7-unknown-linux-musleabihf artifact_path: target/armv7-unknown-linux-musleabihf/release/homedisk release_name: armv7-unknown-linux-musleabihf cross: true strip: false cargo_flags: "" - os: ubuntu-latest target: aarch64-unknown-linux-musl artifact_path: target/aarch64-unknown-linux-musl/release/homedisk release_name: aarch64-unknown-linux-musl cross: true strip: false cargo_flags: "" - os: windows-latest target: x86_64-pc-windows-msvc artifact_path: target/x86_64-pc-windows-msvc/release/homedisk.exe release_name: x86_64-pc-windows-msvc.exe cross: false strip: true cargo_flags: "" - os: macos-latest target: x86_64-apple-darwin artifact_path: target/x86_64-apple-darwin/release/homedisk release_name: x86_64-apple-darwin cross: false strip: true cargo_flags: "" - os: macos-latest target: aarch64-apple-darwin artifact_path: target/aarch64-apple-darwin/release/homedisk release_name: aarch64-apple-darwin cross: false strip: true cargo_flags: "" name: ${{ matrix.os }} for ${{ matrix.target }} runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Rust toolchain id: rust-toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.target }} - name: Cache uses: actions/cache@v3 id: cache with: path: | ~/.cargo/registry/cache/ target/ key: release-${{ matrix.target }}-rust-${{ steps.rust-toolchain.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.lock') }} - name: cargo build uses: actions-rs/cargo@v1 with: command: build args: --release --target=${{ matrix.target }} use-cross: ${{ matrix.cross }} - name: Prepare artifact shell: bash run: | mkdir release mv ${{ matrix.artifact_path }} release/${{ matrix.release_name }} - name: Upload artifact uses: actions/upload-artifact@v3 with: name: release-${{ matrix.target }} path: ./release/*