name: Release
on:
push:
tags:
- 'v*'
jobs:
build:
name: Release for ${{ matrix.config.os }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- os: ubuntu-latest
artifact_name: rgp
zip_file: rustgenpass.tar.gz
asset_name: rustgenpass-linux-$tag.tar.gz
directory: rustgenpass-${{ github.ref_name }}
upx:
args: --best --lzma
strip: true
- os: windows-latest
artifact_name: rgp.exe
zip_file: rgp.zip
asset_name: rustgenpass-windows-$tag.zip
directory: rustgenpass-${{ github.ref_name }}
upx:
args: -9
strip: false
- os: macos-latest
artifact_name: rgp
zip_file: rgp.zip
asset_name: rustgenpass-macos-$tag.zip
directory: rustgenpass-${{ github.ref_name }}
upx:
args: --best
strip: true
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --locked --all-targets
- name: Compress binaries
uses: svenstaro/upx-action@v2
with:
file: target/release/${{ matrix.config.artifact_name }}
args: ${{ matrix.config.upx.args }}
strip: ${{ matrix.config.upx.strip }}
- name: Zip Linux release archive
if: runner.os == 'Linux'
run: |
mkdir -p ${{ matrix.config.directory }}
cp target/release/${{ matrix.config.artifact_name }} README.md LICENSE ${{ matrix.config.directory }}
tar --remove-files -zcf ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
- name: Zip Windows release archive
if: runner.os == 'Windows'
run: |
mkdir -p ${{ matrix.config.directory }}
cp target/release/${{ matrix.config.artifact_name }},README.md,LICENSE ${{ matrix.config.directory }}
7z a -sdel -tzip ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
- name: Zip MacOS release archive
if: runner.os == 'macOS'
run: |
mkdir -p ${{ matrix.config.directory }}
cp target/release/${{ matrix.config.artifact_name }} README.md LICENSE ${{ matrix.config.directory }}
7z a -sdel -tzip ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.config.zip_file }}
asset_name: ${{ matrix.config.asset_name }}
tag: ${{ github.ref }}
- name: Remove packaged zip file after upload
uses: JesseTG/rm@v1.0.3
with:
path: ${{ matrix.config.zip_file }}
publish:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Publish release to crates.io
uses: katyo/publish-crates@v1
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
args: --allow-dirty
check-repo: false
ignore-unpublished-changes: true