🚀 Update build and release workflows
This commit is contained in:
11
.github/workflows/build-release.yml
vendored
11
.github/workflows/build-release.yml
vendored
@@ -174,12 +174,15 @@ jobs:
|
|||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
run: npm run build
|
run: npm run build
|
||||||
|
|
||||||
|
# 生成图标(构建前需要)
|
||||||
|
- name: 生成图标
|
||||||
|
run: wails3 task common:generate:icons
|
||||||
|
shell: bash
|
||||||
|
|
||||||
# 使用 Wails Task 构建和打包应用
|
# 使用 Wails Task 构建和打包应用
|
||||||
- name: 构建和打包 Wails 应用
|
- name: 构建和打包 Wails 应用
|
||||||
run: |
|
working-directory: build/${{ matrix.platform_dir }}
|
||||||
# 使用 wails3 task 执行平台特定的打包任务
|
run: wails3 task package PRODUCTION=true ARCH=${{ matrix.arch }}
|
||||||
cd build/${{ matrix.platform_dir }}
|
|
||||||
wails3 task package PRODUCTION=true ARCH=${{ matrix.arch }}
|
|
||||||
env:
|
env:
|
||||||
CGO_ENABLED: 1
|
CGO_ENABLED: 1
|
||||||
APP_NAME: voidraft
|
APP_NAME: voidraft
|
||||||
|
|||||||
12
Taskfile.yml
12
Taskfile.yml
@@ -12,25 +12,13 @@ vars:
|
|||||||
VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}'
|
VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}'
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
version:
|
|
||||||
summary: Generate version information
|
|
||||||
cmds:
|
|
||||||
- '{{if eq OS "windows"}}cmd /c ".\scripts\version.bat"{{else}}bash ./scripts/version.sh{{end}}'
|
|
||||||
sources:
|
|
||||||
- scripts/version.bat
|
|
||||||
- scripts/version.sh
|
|
||||||
generates:
|
|
||||||
- version.txt
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
summary: Builds the application
|
summary: Builds the application
|
||||||
deps: [version]
|
|
||||||
cmds:
|
cmds:
|
||||||
- task: "{{OS}}:build"
|
- task: "{{OS}}:build"
|
||||||
|
|
||||||
package:
|
package:
|
||||||
summary: Packages a production build of the application
|
summary: Packages a production build of the application
|
||||||
deps: [version]
|
|
||||||
cmds:
|
cmds:
|
||||||
- task: "{{OS}}:package"
|
- task: "{{OS}}:package"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 6.9 KiB |
@@ -20,6 +20,8 @@ const (
|
|||||||
ModShift = darwin.ModShift
|
ModShift = darwin.ModShift
|
||||||
ModOption = darwin.ModOption
|
ModOption = darwin.ModOption
|
||||||
ModCmd = darwin.ModCmd
|
ModCmd = darwin.ModCmd
|
||||||
|
ModAlt = darwin.ModOption // Alias for ModOption (Alt key on macOS)
|
||||||
|
ModWin = darwin.ModCmd // Alias for ModCmd (Cmd key is like Win key)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Key represents a key.
|
// Key represents a key.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ const (
|
|||||||
ModCtrl = linux.ModCtrl
|
ModCtrl = linux.ModCtrl
|
||||||
ModShift = linux.ModShift
|
ModShift = linux.ModShift
|
||||||
ModAlt = linux.ModAlt // Alias for Mod1
|
ModAlt = linux.ModAlt // Alias for Mod1
|
||||||
|
ModWin = linux.Mod4 // Super/Windows key is typically Mod4 on Linux
|
||||||
Mod1 = linux.Mod1
|
Mod1 = linux.Mod1
|
||||||
Mod2 = linux.Mod2
|
Mod2 = linux.Mod2
|
||||||
Mod3 = linux.Mod3
|
Mod3 = linux.Mod3
|
||||||
|
|||||||
@@ -218,23 +218,3 @@ func NewDefaultAppConfig() *AppConfig {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetVersion 获取配置版本
|
|
||||||
func (ac *AppConfig) GetVersion() string {
|
|
||||||
return ac.Metadata.Version
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetVersion 设置配置版本
|
|
||||||
func (ac *AppConfig) SetVersion(version string) {
|
|
||||||
ac.Metadata.Version = version
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetLastUpdated 设置最后更新时间
|
|
||||||
func (ac *AppConfig) SetLastUpdated(timeStr string) {
|
|
||||||
ac.Metadata.LastUpdated = timeStr
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetDefaultConfig 获取默认配置
|
|
||||||
func (ac *AppConfig) GetDefaultConfig() any {
|
|
||||||
return NewDefaultAppConfig()
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -302,7 +302,9 @@ func (s *SelfUpdateService) handleUpdateSuccess(result *SelfUpdateResult) {
|
|||||||
if err := s.configService.Set("updates.version", result.LatestVersion); err != nil {
|
if err := s.configService.Set("updates.version", result.LatestVersion); err != nil {
|
||||||
s.logger.Error("update config version failed", "error", err)
|
s.logger.Error("update config version failed", "error", err)
|
||||||
}
|
}
|
||||||
|
if err := s.configService.Set("metadata.version", result.LatestVersion); err != nil {
|
||||||
|
s.logger.Error("update config version failed", "error", err)
|
||||||
|
}
|
||||||
// 执行配置迁移
|
// 执行配置迁移
|
||||||
if err := s.configService.MigrateConfig(); err != nil {
|
if err := s.configService.MigrateConfig(); err != nil {
|
||||||
s.logger.Error("migrate config failed", "error", err)
|
s.logger.Error("migrate config failed", "error", err)
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
@echo off
|
|
||||||
setlocal enabledelayedexpansion
|
|
||||||
|
|
||||||
REM Simplified version management script - Windows version
|
|
||||||
REM Auto-increment patch version from git tags or use custom version
|
|
||||||
|
|
||||||
REM Configuration section - Set custom version here if needed
|
|
||||||
set "CUSTOM_VERSION="
|
|
||||||
REM Example: set "CUSTOM_VERSION=2.0.0"
|
|
||||||
|
|
||||||
set "VERSION_FILE=version.txt"
|
|
||||||
|
|
||||||
REM Check if custom version is set
|
|
||||||
if not "%CUSTOM_VERSION%"=="" (
|
|
||||||
echo [INFO] Using custom version: %CUSTOM_VERSION%
|
|
||||||
set "VERSION=%CUSTOM_VERSION%"
|
|
||||||
goto :save_version
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Check if git is available
|
|
||||||
git --version >nul 2>&1
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo [ERROR] Git is not installed or not in PATH
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Check if in git repository
|
|
||||||
git rev-parse --git-dir >nul 2>&1
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo [ERROR] Not in a git repository
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Sync remote tags
|
|
||||||
echo [INFO] Syncing remote tags...
|
|
||||||
echo [INFO] Deleting local tags...
|
|
||||||
for /f "delims=" %%i in ('git tag -l') do git tag -d %%i >nul 2>&1
|
|
||||||
|
|
||||||
echo [INFO] Fetching remote tags...
|
|
||||||
git fetch origin --prune >nul 2>&1
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo [WARNING] Failed to fetch from remote, using local tags
|
|
||||||
) else (
|
|
||||||
echo [INFO] Remote tags synced successfully
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Get latest git tag
|
|
||||||
git describe --abbrev=0 --tags > temp_tag.txt 2>nul
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo [ERROR] No git tags found in repository
|
|
||||||
if exist temp_tag.txt del temp_tag.txt
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
set /p LATEST_TAG=<temp_tag.txt
|
|
||||||
del temp_tag.txt
|
|
||||||
|
|
||||||
if not defined LATEST_TAG (
|
|
||||||
echo [ERROR] Failed to read git tag
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
echo [INFO] Latest git tag: %LATEST_TAG%
|
|
||||||
|
|
||||||
REM Remove v prefix
|
|
||||||
set "CLEAN_VERSION=%LATEST_TAG:v=%"
|
|
||||||
|
|
||||||
REM Split version number and increment patch
|
|
||||||
for /f "tokens=1,2,3 delims=." %%a in ("%CLEAN_VERSION%") do (
|
|
||||||
set "MAJOR=%%a"
|
|
||||||
set "MINOR=%%b"
|
|
||||||
set /a "PATCH=%%c+1"
|
|
||||||
)
|
|
||||||
|
|
||||||
set "VERSION=%MAJOR%.%MINOR%.%PATCH%"
|
|
||||||
echo [INFO] Auto-incremented patch version: %VERSION%
|
|
||||||
|
|
||||||
:save_version
|
|
||||||
REM Output version information
|
|
||||||
echo [SUCCESS] Version resolved: %VERSION%
|
|
||||||
echo VERSION=%VERSION%
|
|
||||||
|
|
||||||
REM Save to file
|
|
||||||
echo VERSION=%VERSION% > %VERSION_FILE%
|
|
||||||
|
|
||||||
echo [INFO] Version information saved to %VERSION_FILE%
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 配置区域 - 如需自定义版本,请在此处设置
|
|
||||||
CUSTOM_VERSION=""
|
|
||||||
# 示例: CUSTOM_VERSION="2.0.0"
|
|
||||||
|
|
||||||
VERSION_FILE="version.txt"
|
|
||||||
|
|
||||||
# 检查是否设置了自定义版本
|
|
||||||
if [ -n "$CUSTOM_VERSION" ]; then
|
|
||||||
echo "[INFO] Using custom version: $CUSTOM_VERSION"
|
|
||||||
VERSION="$CUSTOM_VERSION"
|
|
||||||
else
|
|
||||||
# 检查git是否可用
|
|
||||||
if ! command -v git &> /dev/null; then
|
|
||||||
echo "[ERROR] Git is not installed or not in PATH"
|
|
||||||
exit 1
|
|
||||||
elif ! git rev-parse --git-dir &> /dev/null; then
|
|
||||||
echo "[ERROR] Not in a git repository"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
# 同步远程标签
|
|
||||||
echo "[INFO] Syncing remote tags..."
|
|
||||||
echo "[INFO] Deleting local tags..."
|
|
||||||
git tag -l | xargs git tag -d &> /dev/null
|
|
||||||
|
|
||||||
echo "[INFO] Fetching remote tags..."
|
|
||||||
if git fetch origin --prune &> /dev/null; then
|
|
||||||
echo "[INFO] Remote tags synced successfully"
|
|
||||||
else
|
|
||||||
echo "[WARNING] Failed to fetch from remote, using local tags"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 获取最新的git标签
|
|
||||||
LATEST_TAG=$(git describe --abbrev=0 --tags 2>/dev/null)
|
|
||||||
|
|
||||||
if [ -z "$LATEST_TAG" ]; then
|
|
||||||
echo "[ERROR] No git tags found in repository"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "[INFO] Latest git tag: $LATEST_TAG"
|
|
||||||
|
|
||||||
# 移除v前缀
|
|
||||||
CLEAN_VERSION=${LATEST_TAG#v}
|
|
||||||
|
|
||||||
# 分割版本号并递增patch版本
|
|
||||||
IFS='.' read -r MAJOR MINOR PATCH <<< "$CLEAN_VERSION"
|
|
||||||
PATCH=$((PATCH + 1))
|
|
||||||
|
|
||||||
VERSION="$MAJOR.$MINOR.$PATCH"
|
|
||||||
echo "[INFO] Auto-incremented patch version: $VERSION"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 输出版本信息
|
|
||||||
echo "VERSION=$VERSION"
|
|
||||||
|
|
||||||
# 保存到文件供其他脚本使用
|
|
||||||
echo "VERSION=$VERSION" > "$VERSION_FILE"
|
|
||||||
|
|
||||||
echo "[INFO] Version information saved to $VERSION_FILE"
|
|
||||||
Reference in New Issue
Block a user