name: Release
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
permissions:
contents: write
jobs:
build:
name: Build for ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
artifact_name: mvnx
asset_name: mvnx-linux-amd64
- os: macos-latest
artifact_name: mvnx
asset_name: mvnx-macos-amd64
- os: windows-latest
artifact_name: mvnx.exe
asset_name: mvnx-windows-amd64.exe
steps:
- uses: actions/checkout@v6
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libssl-dev
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release
- name: Rename binary (Linux/macOS)
if: matrix.os != 'windows-latest'
run: mv target/release/${{ matrix.artifact_name }} target/release/${{ matrix.asset_name }}
- name: Rename binary (Windows)
if: matrix.os == 'windows-latest'
run: mv target/release/${{ matrix.artifact_name }} target/release/${{ matrix.asset_name }}
- name: Upload binary to Release
uses: softprops/action-gh-release@v3
if: startsWith(github.ref, 'refs/tags/')
with:
files: target/release/${{ matrix.asset_name }}