Skip to content

fix: flatten release artifacts before publish — use find instead of glob #23

fix: flatten release artifacts before publish — use find instead of glob

fix: flatten release artifacts before publish — use find instead of glob #23

Workflow file for this run

name: Release Build
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
version:
description: 'Version tag (e.g. v1.2.0)'
required: true
permissions:
contents: write
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Tauri CLI
run: cargo install tauri-cli --version "^2"
- name: Build Tauri (Linux)
run: cargo-tauri build --bundles appimage,deb
env:
CI: true
- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: linux-builds
path: |
src-tauri/target/release/bundle/appimage/*.AppImage
src-tauri/target/release/bundle/deb/*.deb
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Tauri CLI
run: cargo install tauri-cli --version "^2"
- name: Build Tauri (macOS)
run: cargo-tauri build --bundles dmg
env:
CI: true
- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: macos-builds
path: |
src-tauri/target/release/bundle/dmg/*.dmg
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Tauri CLI
run: cargo install tauri-cli --version "^2"
- name: Build Tauri (Windows)
run: cargo-tauri build --bundles msi,nsis
env:
CI: 'true'
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-builds
path: |
src-tauri/target/release/bundle/msi/*.msi
src-tauri/target/release/bundle/nsis/*.exe
publish-release:
runs-on: ubuntu-latest
needs:
- build-linux
- build-macos
- build-windows
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
steps:
- name: Download bundled artifacts
uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- name: Flatten release assets
run: |
mkdir -p release-assets
find dist -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.dmg" -o -name "*.exe" -o -name "*.msi" \) -exec cp {} release-assets/ \;
echo "Release assets:"
ls -lh release-assets/
- name: Publish GitHub release assets
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.version || github.ref_name }}
name: ${{ github.event.inputs.version || github.ref_name }}
files: release-assets/*
fail_on_unmatched_files: true