Publish release binaries #61
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish release binaries | |
on: | |
push: | |
tags: | |
- 'v*' | |
workflow_dispatch: | |
inputs: | |
test: | |
description: 'Testing the release workflow' | |
required: true | |
default: 'true' | |
jobs: | |
build: | |
name: Publish for ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
name: [linux, armv7, arm64, windows, macos] | |
include: | |
- name: linux | |
os: ubuntu-18.04 | |
build_deps: > | |
libfuse-dev | |
build_flags: --features mount | |
archive_name: rage.tar.gz | |
asset_suffix: x86_64-linux.tar.gz | |
- name: armv7 | |
os: ubuntu-18.04 | |
target: armv7-unknown-linux-gnueabihf | |
build_deps: > | |
gcc-arm-linux-gnueabihf | |
cargo_config: | | |
[target.armv7-unknown-linux-gnueabihf] | |
linker = "arm-linux-gnueabihf-gcc" | |
build_flags: --target armv7-unknown-linux-gnueabihf | |
archive_name: rage.tar.gz | |
asset_suffix: armv7-linux.tar.gz | |
- name: arm64 | |
os: ubuntu-18.04 | |
target: aarch64-unknown-linux-gnu | |
build_deps: > | |
gcc-aarch64-linux-gnu | |
cargo_config: | | |
[target.aarch64-unknown-linux-gnu] | |
linker = "aarch64-linux-gnu-gcc" | |
build_flags: --target aarch64-unknown-linux-gnu | |
archive_name: rage.tar.gz | |
asset_suffix: arm64-linux.tar.gz | |
- name: windows | |
os: windows-latest | |
archive_name: rage.zip | |
asset_suffix: x86_64-windows.zip | |
- name: macos | |
os: macos-latest | |
archive_name: rage.tar.gz | |
asset_suffix: x86_64-darwin.tar.gz | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Add target | |
run: rustup target add ${{ matrix.target }} | |
if: matrix.target != '' | |
- name: Install linux build dependencies | |
run: sudo apt install ${{ matrix.build_deps }} | |
if: matrix.build_deps != '' | |
- name: Set up .cargo/config | |
run: | | |
mkdir .cargo | |
echo '${{ matrix.cargo_config }}' >.cargo/config | |
if: matrix.cargo_config != '' | |
- name: cargo build | |
run: cargo build --release --locked ${{ matrix.build_flags }} | |
working-directory: ./rage | |
- name: Create archive | |
run: | | |
mkdir -p release/rage | |
mv target/${{ matrix.target }}/release/rage* release/rage/ | |
rm release/rage/*.d | |
tar czf ${{ matrix.archive_name }} -C release/ rage/ | |
if: matrix.name != 'windows' | |
- name: Create archive [Windows] | |
run: | | |
mkdir -p release/rage | |
mv target/release/rage.exe release/rage/ | |
mv target/release/rage-keygen.exe release/rage/ | |
cd release/ | |
7z.exe a ../${{ matrix.archive_name }} rage/ | |
shell: bash | |
if: matrix.name == 'windows' | |
- name: Upload archive to release | |
uses: svenstaro/[email protected] | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ${{ matrix.archive_name }} | |
asset_name: rage-$tag-${{ matrix.asset_suffix }} | |
tag: ${{ github.ref }} | |
prerelease: true | |
if: github.event.inputs.test != 'true' | |
deb: | |
name: Debian ${{ matrix.name }} | |
runs-on: ubuntu-18.04 | |
strategy: | |
matrix: | |
name: [linux, armv7, arm64] | |
include: | |
- name: linux | |
target: x86_64-unknown-linux-gnu | |
build_deps: > | |
libfuse-dev | |
build_flags: --features mount | |
- name: armv7 | |
target: armv7-unknown-linux-gnueabihf | |
build_deps: > | |
gcc-arm-linux-gnueabihf | |
cargo_config: | | |
[target.armv7-unknown-linux-gnueabihf] | |
linker = "arm-linux-gnueabihf-gcc" | |
- name: arm64 | |
target: aarch64-unknown-linux-gnu | |
build_deps: > | |
gcc-aarch64-linux-gnu | |
cargo_config: | | |
[target.aarch64-unknown-linux-gnu] | |
linker = "aarch64-linux-gnu-gcc" | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Add target | |
run: rustup target add ${{ matrix.target }} | |
- name: cargo install cargo-deb | |
uses: actions-rs/cargo@v1 | |
with: | |
command: install | |
args: cargo-deb | |
- name: Install build dependencies | |
run: sudo apt install ${{ matrix.build_deps }} | |
if: matrix.build_deps != '' | |
- name: Set up .cargo/config | |
run: | | |
mkdir .cargo | |
echo '${{ matrix.cargo_config }}' >.cargo/config | |
if: matrix.cargo_config != '' | |
- name: cargo build | |
run: cargo build --release --locked --target ${{ matrix.target }} ${{ matrix.build_flags }} | |
working-directory: ./rage | |
- name: Generate completions | |
uses: actions-rs/cargo@v1 | |
with: | |
command: run | |
args: --example generate-completions | |
- name: Generate manpages | |
uses: actions-rs/cargo@v1 | |
with: | |
command: run | |
args: --example generate-docs | |
- name: Update Debian package config for cross-compile | |
run: sed -i '/\/rage-mount/d' rage/Cargo.toml | |
if: matrix.name != 'linux' | |
- name: cargo deb | |
uses: actions-rs/cargo@v1 | |
with: | |
command: deb | |
args: --package rage --no-build --target ${{ matrix.target }} | |
- name: Upload Debian package to release | |
uses: svenstaro/[email protected] | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: target/${{ matrix.target }}/debian/*.deb | |
tag: ${{ github.ref }} | |
file_glob: true | |
prerelease: true | |
if: github.event.inputs.test != 'true' |