Files
readflow/.gitea/workflows/release.yml
大麦 3a6f2f29cd ci: 添加 Gitea Actions 自动编译工作流
- 支持 Windows/Linux/macOS 三平台
- 使用交叉编译 (ubuntu + mingw)
- 自动打包并上传 Release
- 触发器:Git tag 推送

平台支持:
- Windows: x86_64-pc-windows-gnu (mingw)
- Linux: x86_64-unknown-linux-gnu
- macOS: x86_64-apple-darwin
2026-03-10 16:08:21 +08:00

198 lines
5.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Release Build
on:
push:
tags:
- 'v*'
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
build-windows:
name: Build Windows
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
target: x86_64-pc-windows-gnu
profile: minimal
components: rustfmt, clippy
- name: Install MinGW
run: sudo apt-get update && sudo apt-get install -y mingw-w64
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ubuntu-cargo-registry-windows-${{ hashFiles('**/Cargo.lock') }}
- name: Build release
run: cargo build --release --target x86_64-pc-windows-gnu
- name: Package Windows
run: |
mkdir -p release
cp target/x86_64-pc-windows-gnu/release/readflow.exe release/
# Create README
cat > release/README.txt << 'EOF'
ReadFlow v${{ github.ref_name }} for Windows
快速开始:
1. 解压到任意目录
2. 双击运行 readflow.exe
功能:
- EPUB/MOBI/Markdown/PDF 阅读
- 20+ 编程语言语法高亮
- 双语翻译对照
- 笔记与书签系统
- 插件系统
- 主题商店
技术支持damai@foshanhuiya.com
EOF
cd release
zip -r ../readflow-${{ github.ref_name }}-windows-x86_64.zip .
- name: Upload to Release
uses: softprops/action-gh-release@v2
with:
name: Windows x86_64
files: readflow-${{ github.ref_name }}-windows-x86_64.zip
tag_name: ${{ github.ref_name }}
token: ${{ secrets.GITEA_TOKEN }}
fail_on_unmatched_files: true
env:
GITHUB_SERVER_URL: http://192.168.120.110:4000
GITHUB_REPOSITORY: damai/readflow
build-linux:
name: Build Linux
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
target: x86_64-unknown-linux-gnu
profile: minimal
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
- name: Build release
run: cargo build --release --target x86_64-unknown-linux-gnu
- name: Package Linux
run: |
mkdir -p release
cp target/x86_64-unknown-linux-gnu/release/readflow release/
chmod +x release/readflow
# Create .desktop file
cat > release/readflow.desktop << 'EOF'
[Desktop Entry]
Name=ReadFlow
Comment=ReadFlow - 面向开发者和知识工作者的阅读工具
Exec=readflow
Icon=readflow
Terminal=false
Type=Application
Categories=Utility;Reading;
EOF
cd release
tar -czf ../readflow-${{ github.ref_name }}-linux-x86_64.tar.gz readflow readflow.desktop
- name: Upload to Release
uses: softprops/action-gh-release@v2
with:
name: Linux x86_64
files: readflow-${{ github.ref_name }}-linux-x86_64.tar.gz
tag_name: ${{ github.ref_name }}
token: ${{ secrets.GITEA_TOKEN }}
fail_on_unmatched_files: true
env:
GITHUB_SERVER_URL: http://192.168.120.110:4000
GITHUB_REPOSITORY: damai/readflow
build-macos:
name: Build macOS
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
target: x86_64-apple-darwin
profile: minimal
- name: Build release
run: cargo build --release --target x86_64-apple-darwin
- name: Package macOS
run: |
mkdir -p release/ReadFlow.app/Contents/MacOS
mkdir -p release/ReadFlow.app/Contents/Resources
cp target/release/readflow release/ReadFlow.app/Contents/MacOS/
chmod +x release/ReadFlow.app/Contents/MacOS/readflow
# Create Info.plist
cat > release/ReadFlow.app/Contents/Info.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>readflow</string>
<key>CFBundleIdentifier</key>
<string>com.readflow.app</string>
<key>CFBundleName</key>
<string>ReadFlow</string>
<key>CFBundleDisplayName</key>
<string>ReadFlow</string>
<key>CFBundleShortVersionString</key>
<string>${{ github.ref_name }}</string>
<key>CFBundleVersion</key>
<string>${{ github.ref_name }}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
EOF
# Copy assets
if [ -d "assets" ]; then
cp -r assets release/ReadFlow.app/Contents/Resources/
fi
cd release
zip -r -X ../readflow-${{ github.ref_name }}-macos-x86_64.zip ReadFlow.app
- name: Upload to Release
uses: softprops/action-gh-release@v2
with:
name: macOS x86_64
files: readflow-${{ github.ref_name }}-macos-x86_64.zip
tag_name: ${{ github.ref_name }}
token: ${{ secrets.GITEA_TOKEN }}
fail_on_unmatched_files: true
env:
GITHUB_SERVER_URL: http://192.168.120.110:4000
GITHUB_REPOSITORY: damai/readflow