Files
age-plugin-yubikey/.github/workflows/release.yml
T
Jack Grigg eeccad0c3f Use Ubuntu 18.04 to build Debian packages
cargo-deb requires the lzma_stream_encoder_mt function, which doesn't
exist in the version of liblzma in Ubuntu 16.04.
2021-04-11 23:30:22 +12:00

148 lines
4.2 KiB
YAML

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, windows, macos]
include:
- name: linux
os: ubuntu-16.04
build_deps: >
libpcsclite-dev
archive_name: age-plugin-yubikey.tar.gz
asset_suffix: x86_64-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'
deb:
name: Debian ${{ matrix.name }}
runs-on: ubuntu-18.04
strategy:
matrix:
name: [linux]
include:
- name: linux
target: x86_64-unknown-linux-gnu
build_deps: >
libpcsclite-dev
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 }}
- name: Generate manpages
uses: actions-rs/cargo@v1
with:
command: run
args: --example generate-docs
- name: cargo deb
uses: actions-rs/cargo@v1
with:
command: deb
args: --package age-plugin-yubikey --no-build --target ${{ matrix.target }}
- name: Upload Debian package to release
uses: svenstaro/upload-release-action@2.2.0
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'