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' CFBundleExecutable readflow CFBundleIdentifier com.readflow.app CFBundleName ReadFlow CFBundleDisplayName ReadFlow CFBundleShortVersionString ${{ github.ref_name }} CFBundleVersion ${{ github.ref_name }} CFBundlePackageType APPL NSHighResolutionCapable 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