Skip to content

feat: action 全局折叠选项细化 #33

feat: action 全局折叠选项细化

feat: action 全局折叠选项细化 #33

Workflow file for this run

name: 自动构建和发布
on:
push:
tags:
- 'v*' # 推送 tag 时触发,如 v1.0.0
workflow_dispatch: # 允许手动触发
permissions:
contents: write
jobs:
# 构建 Windows 版本
build-windows:
runs-on: windows-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: 10
run_install: false
- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: 安装 Rust 稳定版
uses: dtolnay/rust-toolchain@stable
- name: 更新版本号
if: startsWith(github.ref, 'refs/tags/v')
run: |
$ver = "${{ github.ref_name }}".Substring(1)
Write-Host "Setting version to $ver"
npm pkg set version=$ver
npm --prefix src-vscode pkg set version=$ver
(Get-Content src-tauri/tauri.conf.json) -replace '"version": ".*"', "`"version`": `"$ver`"" | Set-Content src-tauri/tauri.conf.json
(Get-Content src-tauri/Cargo.toml) -replace '^version = ".*"', "version = `"$ver`"" | Set-Content src-tauri/Cargo.toml
- name: 安装依赖
run: pnpm install
- name: 构建应用
run: pnpm tauri build
- name: 检查构建产物
run: |
if (!(Test-Path "src-tauri/target/release/bundle")) {
Write-Host "构建产物目录不存在"
exit 1
}
Write-Host "构建产物目录存在,列出内容:"
Get-ChildItem "src-tauri/target/release/bundle" -File | Select-Object -First 10 | ForEach-Object { $_.FullName }
- name: 上传构建产物
uses: actions/upload-artifact@v4
with:
name: windows-x86_64-artifacts
path: src-tauri/target/release/bundle/
# 构建 macOS 版本
build-macos:
strategy:
matrix:
include:
- arch: x86_64
runner: macos-15-intel # Intel-based macOS runner
- arch: aarch64
runner: macos-latest # Apple Silicon macOS runner
fail-fast: false
runs-on: ${{ matrix.runner }}
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: 10
run_install: false
- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: 安装 Rust 稳定版
uses: dtolnay/rust-toolchain@stable
- name: 更新版本号
if: startsWith(github.ref, 'refs/tags/v')
run: |
ver=${{ github.ref_name }}
ver=${ver:1}
echo "Setting version to ${ver}"
npm pkg set version=${ver}
npm --prefix src-vscode pkg set version=${ver}
sed -i '' "s/\"version\": \".*\"/\"version\": \"${ver}\"/" src-tauri/tauri.conf.json
sed -i '' "s/^version = \".*\"/version = \"${ver}\"/" src-tauri/Cargo.toml
- name: 安装依赖
run: pnpm install
- name: 构建应用
run: pnpm tauri build
- name: 检查构建产物
run: |
if [ ! -d "src-tauri/target/release/bundle" ]; then
echo "构建产物目录不存在"
exit 1
fi
echo "构建产物目录存在,列出内容:"
find src-tauri/target/release/bundle -type f | head -10
- name: 上传构建产物
uses: actions/upload-artifact@v4
with:
name: macos-${{ matrix.arch }}-artifacts
path: src-tauri/target/release/bundle/
# 构建 Linux 版本
build-linux:
runs-on: ubuntu-22.04
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: 10
run_install: false
- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: 安装 Rust 稳定版
uses: dtolnay/rust-toolchain@stable
- name: 更新版本号
if: startsWith(github.ref, 'refs/tags/v')
run: |
ver=${{ github.ref_name }}
ver=${ver:1}
echo "Setting version to ${ver}"
npm pkg set version=${ver}
npm --prefix src-vscode pkg set version=${ver}
sed -i "s/\"version\": \".*\"/\"version\": \"${ver}\"/" src-tauri/tauri.conf.json
sed -i "s/^version = \".*\"/version = \"${ver}\"/" src-tauri/Cargo.toml
- name: 安装系统依赖
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf libssl-dev
sudo apt-get install -y fuse libfuse2 wget file
- name: 安装依赖
run: pnpm install
- name: 构建应用
run: pnpm tauri build
- name: 检查构建产物
run: |
if [ ! -d "src-tauri/target/release/bundle" ]; then
echo "构建产物目录不存在"
exit 1
fi
echo "构建产物目录存在,列出内容:"
find src-tauri/target/release/bundle -type f | head -10
- name: 上传构建产物
uses: actions/upload-artifact@v4
with:
name: linux-x86_64-artifacts
path: src-tauri/target/release/bundle/
# 生成 changelog
changelog:
name: Generate changelog
runs-on: ubuntu-latest
outputs:
release_body: ${{ steps.git-cliff.outputs.content }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate a changelog
uses: orhun/git-cliff-action@v4
id: git-cliff
with:
config: .github/cliff.toml
args: -vv --latest --strip header
env:
OUTPUT: CHANGES.md
GITHUB_REPO: ${{ github.repository }}
# 创建 GitHub Release
release:
needs: [build-windows, build-macos, build-linux, changelog]
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 下载所有构建产物
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: 显示下载的文件
run: find artifacts/ -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" -o -name "*.app.tar.gz" \)
- name: 创建 Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
name: 'MaaLogAnalyzer-${{ github.ref_name }}'
body: |
## 📦 下载说明
### Windows
- **x64**: 下载 `.msi` 安装包
### macOS
- **Intel 芯片**: 下载 `x64.dmg` 文件
- **Apple Silicon (M1/M2/M3)**: 下载 `aarch64.dmg` 文件
### Linux
- **x64**: 下载 `.deb` 文件
## 📝 更新内容
${{ needs.changelog.outputs.release_body }}
---
构建于: ${{ github.event.head_commit.timestamp }}
draft: false
prerelease: false
files: |
artifacts/*-artifacts/**/*.msi
artifacts/*-artifacts/**/*.dmg
artifacts/*-artifacts/**/*.deb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}