Add CI workflow and helper to create releases and attach artifacts

This commit is contained in:
webadderall
2026-03-10 19:14:54 +11:00
parent a46519358a
commit 5522a9829c
3 changed files with 108 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
name: Create Release
on:
workflow_dispatch:
inputs:
tag_name:
description: 'Tag name (e.g., v1.0.0)'
required: true
release_name:
description: 'Release title'
required: true
body:
description: 'Release notes'
required: false
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install
run: npm ci
- name: Build Linux
run: npm run build:linux
- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: linux-artifacts
path: release/**
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install
run: npm ci
- name: Build Windows
run: npm run build:win
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-artifacts
path: release/**
build-mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install
run: npm ci
- name: Build Mac
run: npm run build:mac
- name: Upload Mac artifacts
uses: actions/upload-artifact@v4
with:
name: mac-artifacts
path: release/**
create_release:
needs: [build-linux, build-windows, build-mac]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download Linux artifacts
uses: actions/download-artifact@v4
with:
name: linux-artifacts
path: release/
- name: Download Windows artifacts
uses: actions/download-artifact@v4
with:
name: windows-artifacts
path: release/
- name: Download Mac artifacts
uses: actions/download-artifact@v4
with:
name: mac-artifacts
path: release/
- name: Create GitHub release and upload artifacts
uses: ncipollo/release-action@v1
with:
tag: ${{ github.event.inputs.tag_name }}
name: ${{ github.event.inputs.release_name }}
body: ${{ github.event.inputs.body }}
files: 'release/**'
+1
View File
@@ -26,6 +26,7 @@
"build:mac": "tsc && vite build && electron-builder --mac",
"build:win": "tsc && vite build && electron-builder --win",
"build:linux": "tsc && vite build && electron-builder --linux",
"release:dispatch": "sh ./scripts/trigger_release.sh",
"test": "vitest --run",
"test:watch": "vitest"
},
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Usage: ./scripts/trigger_release.sh <tag> "Release Title" "Release notes"
set -euo pipefail
if ! command -v gh >/dev/null 2>&1; then
echo "gh (GitHub CLI) is required to trigger the workflow. Install: https://cli.github.com/"
exit 1
fi
TAG="$1"
RELEASE_NAME="$2"
BODY="${3:-}"
# Trigger the workflow_dispatch for the create-release workflow
gh workflow run .github/workflows/create-release.yml -f tag_name="$TAG" -f release_name="$RELEASE_NAME" -f body="$BODY"
echo "Triggered workflow to create release $TAG"