feat: ConvertGUI v2.0 (Wails + preview/trim + NSIS + Gitea CI)
Build Windows Installer / build (push) Successful in 4m11s
Build Windows Installer / build (push) Successful in 4m11s
This commit is contained in:
40 files changed
+6084
-266
No files matched your search
@@ -0,0 +1,107 @@
|
||||
name: Build Windows Installer
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install NSIS and build tools
|
||||
run: |
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nsis wget curl tar unzip zip ca-certificates
|
||||
else
|
||||
apt-get update
|
||||
apt-get install -y nsis wget curl tar unzip zip ca-certificates
|
||||
fi
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '22'
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.24'
|
||||
|
||||
- name: Build & test frontend
|
||||
working-directory: frontend
|
||||
run: |
|
||||
npm install
|
||||
npm test
|
||||
npm run build
|
||||
|
||||
- name: Run Go unit tests
|
||||
run: go test ./...
|
||||
|
||||
- name: Determine version
|
||||
id: ver
|
||||
run: |
|
||||
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
|
||||
VER="${GITHUB_REF_NAME#v}"
|
||||
else
|
||||
VER="2.0.0-ci.${GITHUB_RUN_NUMBER}"
|
||||
fi
|
||||
echo "version=${VER}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Embed Windows icon and manifest (.syso)
|
||||
run: |
|
||||
go run github.com/akavel/rsrc@v0.10.2 \
|
||||
-arch amd64 \
|
||||
-ico build/windows/icon.ico \
|
||||
-manifest build/windows/app.manifest \
|
||||
-o rsrc_windows_amd64.syso
|
||||
|
||||
- name: Cross-compile Windows binary (convert.exe)
|
||||
env:
|
||||
CGO_ENABLED: "0"
|
||||
GOOS: windows
|
||||
GOARCH: amd64
|
||||
run: |
|
||||
mkdir -p dist/bin
|
||||
go build -tags desktop,production \
|
||||
-ldflags="-H windowsgui -s -w -X main.Version=${{ steps.ver.outputs.version }}" \
|
||||
-o dist/convert.exe .
|
||||
|
||||
- name: Download static FFmpeg & FFprobe for Windows
|
||||
run: |
|
||||
wget -q -O ffmpeg.zip "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip"
|
||||
unzip -j -q ffmpeg.zip "*/bin/ffmpeg.exe" "*/bin/ffprobe.exe" -d dist/bin/
|
||||
rm -f ffmpeg.zip
|
||||
|
||||
- name: Package Portable ZIP
|
||||
run: |
|
||||
cd dist
|
||||
zip -r "ConvertGUI-Portable-${{ steps.ver.outputs.version }}-win64.zip" convert.exe bin/
|
||||
|
||||
- name: Build Windows NSIS Installer
|
||||
run: |
|
||||
makensis -DVERSION="${{ steps.ver.outputs.version }}" installer/installer.nsi
|
||||
|
||||
- name: Upload Build Artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ConvertGUI-Windows-${{ steps.ver.outputs.version }}
|
||||
path: |
|
||||
dist/ConvertGUI-Setup-${{ steps.ver.outputs.version }}.exe
|
||||
dist/ConvertGUI-Portable-${{ steps.ver.outputs.version }}-win64.zip
|
||||
|
||||
- name: Publish Gitea Release
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: |
|
||||
dist/ConvertGUI-Setup-${{ steps.ver.outputs.version }}.exe
|
||||
dist/ConvertGUI-Portable-${{ steps.ver.outputs.version }}-win64.zip
|
||||
name: Release ${{ github.ref_name }}
|
||||
Reference in new issue
Block a user