Merge pull request #13 from str4d/release-workflow
CI: Add release workflow
This commit is contained in:
@@ -0,0 +1,110 @@
|
|||||||
|
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-latest
|
||||||
|
build_deps: >
|
||||||
|
libpcsclite-dev
|
||||||
|
archive_name: age-plugin-yubikey.tar.gz
|
||||||
|
asset_suffix: x86_64-linux.tar.gz
|
||||||
|
|
||||||
|
- name: armv7
|
||||||
|
os: ubuntu-latest
|
||||||
|
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: age-plugin-yubikey.tar.gz
|
||||||
|
asset_suffix: armv7-linux.tar.gz
|
||||||
|
|
||||||
|
- name: arm64
|
||||||
|
os: ubuntu-latest
|
||||||
|
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: age-plugin-yubikey.tar.gz
|
||||||
|
asset_suffix: arm64-linux.tar.gz
|
||||||
|
|
||||||
|
- name: windows
|
||||||
|
os: windows-latest
|
||||||
|
archive_name: age-plugin-yubikey.zip
|
||||||
|
asset_suffix: x86_64-windows.zip
|
||||||
|
|
||||||
|
- name: macos
|
||||||
|
os: macos-latest
|
||||||
|
archive_name: age-plugin-yubikey.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 }}
|
||||||
|
|
||||||
|
- name: Create archive
|
||||||
|
run: |
|
||||||
|
mkdir -p release/age-plugin-yubikey
|
||||||
|
mv target/${{ matrix.target }}/release/age-plugin-yubikey release/age-plugin-yubikey/
|
||||||
|
tar czf ${{ matrix.archive_name }} -C release/ age-plugin-yubikey/
|
||||||
|
if: matrix.name != 'windows'
|
||||||
|
|
||||||
|
- name: Create archive [Windows]
|
||||||
|
run: |
|
||||||
|
mkdir -p release/age-plugin-yubikey
|
||||||
|
mv target/release/age-plugin-yubikey.exe release/age-plugin-yubikey/
|
||||||
|
cd release/
|
||||||
|
7z.exe a ../${{ matrix.archive_name }} age-plugin-yubikey/
|
||||||
|
shell: bash
|
||||||
|
if: matrix.name == 'windows'
|
||||||
|
|
||||||
|
- name: Upload archive to release
|
||||||
|
uses: svenstaro/upload-release-action@2.2.0
|
||||||
|
with:
|
||||||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
file: ${{ matrix.archive_name }}
|
||||||
|
asset_name: age-plugin-yubikey-$tag-${{ matrix.asset_suffix }}
|
||||||
|
tag: ${{ github.ref }}
|
||||||
|
prerelease: true
|
||||||
|
if: github.event.inputs.test != 'true'
|
||||||
Reference in New Issue
Block a user