Skip to content

chore(release): v0.1.1 #25

chore(release): v0.1.1

chore(release): v0.1.1 #25

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: linux
- os: windows-latest
platform: windows
- os: macos-latest
platform: darwin
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Set up Node
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Cache Go modules
uses: actions/cache@v5
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Cache Node modules
uses: actions/cache@v5
with:
path: frontend/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('frontend/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
- name: Install Linux dependencies
if: matrix.platform == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libwebkit2gtk-4.1-dev \
pkg-config \
build-essential
- name: Install Windows dependencies
if: matrix.platform == 'windows'
shell: pwsh
run: |
choco install nsis -y
echo "C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install Wails CLI
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
- name: Install frontend dependencies
run: |
cd frontend
npm ci
# Linux and Windows use the standard package command (x86_64 only)
- name: Package (Linux / Windows)
if: matrix.platform != 'darwin'
run: wails3 package
# macOS builds a universal binary covering both arm64 and x86_64 in one .app
- name: Package (macOS universal)
if: matrix.platform == 'darwin'
run: wails3 task darwin:package:universal
- name: Upload Linux artifacts
if: matrix.platform == 'linux'
uses: actions/upload-artifact@v6
with:
name: linux-artifacts
path: |
bin/filamint
bin/filamint.deb
- name: Upload Windows artifacts
if: matrix.platform == 'windows'
uses: actions/upload-artifact@v6
with:
name: windows-artifacts
path: bin/filamint*.exe
- name: Create DMG
if: matrix.platform == 'darwin'
run: hdiutil create -volname "Filamint" -srcfolder bin/filamint.app -ov -format UDZO bin/filamint.dmg
- name: Upload macOS artifacts
if: matrix.platform == 'darwin'
uses: actions/upload-artifact@v6
with:
name: darwin-artifacts
path: bin/filamint.dmg
release:
needs: build
if: needs.build.result == 'success'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Download all artifacts
uses: actions/download-artifact@v8
with:
path: artifacts
- name: Extract version from tag
id: version
run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
- name: Generate latest.json
run: |
VERSION="${{ steps.version.outputs.VERSION }}"
DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
REPO="${{ github.repository }}"
BASE="https://github.com/${REPO}/releases/download/v${VERSION}"
jq -n \
--arg version "$VERSION" \
--arg date "$DATE" \
--arg base "$BASE" \
'{
version: $version,
notes: ("Release v" + $version),
pub_date: $date,
platforms: {
"windows-x86_64-installer": { url: ($base + "/filamint-amd64-installer.exe") },
"windows-x86_64-portable": { url: ($base + "/filamint.exe") },
"darwin-aarch64": { url: ($base + "/filamint.dmg") },
"darwin-x86_64": { url: ($base + "/filamint.dmg") },
"linux-x86_64": { url: ($base + "/filamint") },
"linux-x86_64-deb": { url: ($base + "/filamint.deb") }
}
}' > latest.json
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
files: |
artifacts/linux-artifacts/filamint
artifacts/linux-artifacts/filamint.deb
artifacts/windows-artifacts/*.exe
artifacts/darwin-artifacts/*.dmg
latest.json