release: release v0.1.4 (#18) #49
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: Test & Release | |
on: | |
push: | |
branches: | |
- "**" | |
tags-ignore: | |
- "quicssh-*" | |
pull_request: | |
env: | |
CRATE_NAME: quicssh-rs | |
GITHUB_TOKEN: ${{ github.token }} | |
RUST_BACKTRACE: 1 | |
jobs: | |
build: | |
permissions: write-all | |
name: Compile ${{ matrix.platform.os_name }} with Rust ${{ matrix.toolchain }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
# assert perfect success | |
fail-fast: true | |
matrix: | |
platform: | |
# Platforms that don't work: | |
# | |
# - sparc64-unknown-linux-gnu - cannot compile openssl-sys | |
# - x86_64-unknown-illumos - weird error compiling openssl - "bin/sh: 1: granlib: not found" | |
- os_name: Windows-x86_64 | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: quicssh-rs | |
name: quicssh-Windows-x86_64.tar.gz | |
- os_name: FreeBSD-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-freebsd | |
bin: quicssh-rs | |
name: quicssh-FreeBSD-x86_64.tar.gz | |
- os_name: Linux-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-linux-musl | |
bin: quicssh-rs | |
name: quicssh-Linux-x86_64-musl.tar.gz | |
- os_name: Linux-aarch64 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
bin: quicssh-rs | |
name: quicssh-Linux-aarch64-musl.tar.gz | |
- os_name: Linux-arm | |
os: ubuntu-20.04 | |
target: arm-unknown-linux-musleabi | |
bin: quicssh-rs | |
name: quicssh-Linux-arm-musl.tar.gz | |
- os_name: Linux-i686 | |
os: ubuntu-20.04 | |
target: i686-unknown-linux-musl | |
bin: quicssh-rs | |
name: quicssh-Linux-i686-musl.tar.gz | |
- os_name: macOS-x86_64 | |
os: macOS-latest | |
target: x86_64-apple-darwin | |
bin: quicssh-rs | |
name: quicssh-Darwin-x86_64.tar.gz | |
- os_name: macOS-aarch64 | |
os: macOS-latest | |
target: aarch64-apple-darwin | |
bin: quicssh-rs | |
name: quicssh-Darwin-aarch64.tar.gz | |
toolchain: | |
- stable | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache cargo & target directories | |
uses: Swatinem/rust-cache@v2 | |
- name: Install musl-tools on Linux | |
run: sudo apt-get update --yes && sudo apt-get install --yes musl-tools | |
if: contains(matrix.platform.name, 'musl') | |
- name: Build binary | |
uses: houseabsolute/actions-rust-cross@v0 | |
with: | |
command: "build" | |
target: ${{ matrix.platform.target }} | |
toolchain: ${{ matrix.toolchain }} | |
args: ${{ (startsWith(github.ref, 'refs/tags/test-release') || startsWith(github.ref,'refs/tags/v')) && '--locked --release' || '--locked' }} # short evaluation emulates ternary conditional operator | |
strip: true | |
- name: Package as archive | |
# in future we would need bundle etc files | |
shell: bash | |
run: | | |
cd target/${{ matrix.platform.target }}/release | |
if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then | |
7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }}.exe | |
else | |
tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} | |
fi | |
cd - | |
if: (startsWith(github.ref, 'refs/tags/test-release') || startsWith(github.ref,'refs/tags/v')) | |
- name: Generate SHA-256 | |
run: shasum -a 256 ${{ matrix.platform.name }} | |
if: (startsWith(github.ref, 'refs/tags/test-release') || startsWith(github.ref,'refs/tags/v')) | |
- name: Publish release artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: quicssh-${{ matrix.platform.os_name }} | |
path: "quicssh-*" | |
if: startsWith(github.ref, 'refs/tags/test-release') | |
- name: Publish GitHub release | |
uses: softprops/action-gh-release@v1 | |
with: | |
draft: true | |
files: "quicssh-*" | |
if: matrix.toolchain == 'stable' && startsWith(github.ref,'refs/tags/v') | |
crate: | |
permissions: write-all | |
name: publish crate.io release | |
runs-on: ubuntu-latest | |
needs: build | |
if: (startsWith(github.ref, 'refs/tags/test-release') || startsWith(github.ref,'refs/tags/v')) | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Cache cargo & target directories | |
uses: Swatinem/rust-cache@v2 | |
- name: publish crate.io release (dummy) | |
uses: katyo/publish-crates@v2 | |
with: | |
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
dry-run: ${{ startsWith(github.ref, 'refs/tags/test-release') }} | |