Skip to content

chore: Bump workspace version to 1.1.0 #7

chore: Bump workspace version to 1.1.0

chore: Bump workspace version to 1.1.0 #7

Workflow file for this run

name: Release
permissions:
contents: read
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
env:
RUST_BACKTRACE: 1
CARGO_TERM_COLOR: always
CLICOLOR: 1
COLUMNS: 130
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
jobs:
build:
name: Build (${{ matrix.target }})
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-pc-windows-msvc
runner: windows-latest
system: windows
arch: x86_64
ext: .exe
- target: aarch64-pc-windows-msvc
runner: windows-latest
system: windows
arch: aarch64
ext: .exe
- target: aarch64-apple-darwin
runner: macos-latest
system: macos
arch: aarch64
ext: ""
- target: x86_64-unknown-linux-gnu
runner: ubuntu-latest
system: linux
arch: x86_64
ext: ""
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
clang mold \
libwayland-dev libxkbcommon-dev \
libgl1-mesa-dev libx11-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Build
run: cargo build --release --locked --target ${{ matrix.target }} -p cli -p gui
- name: Rename artifacts
shell: bash
run: |
dir="target/${{ matrix.target }}/release"
cp "${dir}/cli${{ matrix.ext }}" "cli-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}"
cp "${dir}/gui${{ matrix.ext }}" "gui-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}"
- name: Upload CLI artifact
uses: actions/upload-artifact@v4
with:
name: cli-${{ matrix.system }}-${{ matrix.arch }}
path: cli-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}
if-no-files-found: error
retention-days: 7
- name: Upload GUI artifact
uses: actions/upload-artifact@v4
with:
name: gui-${{ matrix.system }}-${{ matrix.arch }}
path: gui-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}
if-no-files-found: error
retention-days: 7
- name: Package CLI archive
shell: bash
run: |
dir="multivc-cli-${{ matrix.system }}-${{ matrix.arch }}"
mkdir "$dir"
cp "cli-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}" "$dir/cli${{ matrix.ext }}"
echo 'language = "En"' > "$dir/settings.toml"
if [[ "${{ matrix.system }}" == "windows" ]]; then
7z a "${dir}.zip" "$dir"
else
tar czf "${dir}.tar.gz" "$dir"
fi
- name: Package GUI archive
shell: bash
run: |
dir="multivc-gui-${{ matrix.system }}-${{ matrix.arch }}"
mkdir "$dir"
cp "gui-${{ matrix.system }}-${{ matrix.arch }}${{ matrix.ext }}" "$dir/gui${{ matrix.ext }}"
echo 'language = "En"' > "$dir/settings.toml"
if [[ "${{ matrix.system }}" == "windows" ]]; then
7z a "${dir}.zip" "$dir"
else
tar czf "${dir}.tar.gz" "$dir"
fi
- name: Upload CLI archive
uses: actions/upload-artifact@v4
with:
name: archive-cli-${{ matrix.system }}-${{ matrix.arch }}
path: multivc-cli-${{ matrix.system }}-${{ matrix.arch }}.*
if-no-files-found: error
retention-days: 7
- name: Upload GUI archive
uses: actions/upload-artifact@v4
with:
name: archive-gui-${{ matrix.system }}-${{ matrix.arch }}
path: multivc-gui-${{ matrix.system }}-${{ matrix.arch }}.*
if-no-files-found: error
retention-days: 7
release:
name: Create GitHub Release
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate changelog
uses: orhun/git-cliff-action@v4
id: changelog
with:
config: cliff.toml
args: --latest --strip header
env:
OUTPUT: CHANGELOG.md
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/
merge-multiple: true
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create "${{ github.ref_name }}" \
--repo "${{ github.repository }}" \
--title "MultiVC ${{ github.ref_name }}" \
--notes-file CHANGELOG.md \
artifacts/*