HomeDisk/.github/workflows/build-releases.yml

123 lines
3.5 KiB
YAML

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/*