build #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build | |
| permissions: | |
| contents: write | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Release version (e.g. v1.2.3)' | |
| required: true | |
| default: '' | |
| description: | |
| description: 'Release description' | |
| required: false | |
| default: '' | |
| publish: | |
| description: '是否创建 GitHub Release?' | |
| required: false | |
| default: 'false' | |
| type: boolean | |
| jobs: | |
| build-windows-x86: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Windows x86 (non-inline) | |
| run: cargo build --release --target i686-pc-windows-msvc --no-default-features --features "download-binaries" | |
| - name: Copy model folder for Windows x86 | |
| run: cp -r ./model ./target/i686-pc-windows-msvc/release/ | |
| - name: Zip Windows x86 artifacts | |
| run: | | |
| cd ./target/i686-pc-windows-msvc/release | |
| 7z a ../../../i686-pc-windows-msvc.zip ddddocr.exe model | |
| - name: Upload Windows x86 artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: i686-pc-windows-msvc | |
| path: ./target/i686-pc-windows-msvc.zip | |
| build-windows-x64: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Windows x64 (non-inline) | |
| run: cargo build --release --no-default-features --features "download-binaries" | |
| - name: Copy model folder for Windows x64 | |
| run: cp -r ./model ./target/release/ | |
| - name: Zip Windows x64 artifacts | |
| run: | | |
| cd ./target/release | |
| 7z a ../../x86_64-pc-windows-msvc.zip ddddocr.exe model | |
| - name: Upload Windows x64 artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-pc-windows-msvc | |
| path: ./target/x86_64-pc-windows-msvc.zip | |
| build-windows-x86-inline: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Windows x86 (inline-model) | |
| run: cargo build --release --target i686-pc-windows-msvc | |
| - name: Zip Windows x86 inline artifacts | |
| run: | | |
| cd ./target/i686-pc-windows-msvc/release | |
| 7z a ../../../i686-pc-windows-msvc-inline.zip ddddocr.exe | |
| - name: Upload Windows x86 inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: i686-pc-windows-msvc-inline | |
| path: ./target/i686-pc-windows-msvc-inline.zip | |
| build-windows-x64-inline: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Windows x64 (inline-model) | |
| run: cargo build --release | |
| - name: Zip Windows x64 inline artifacts | |
| run: | | |
| cd ./target/release | |
| 7z a ../../x86_64-pc-windows-msvc-inline.zip ddddocr.exe | |
| - name: Upload Windows x64 inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-pc-windows-msvc-inline | |
| path: ./target/x86_64-pc-windows-msvc-inline.zip | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Linux (non-inline) | |
| run: cargo build --release --no-default-features --features "download-binaries" | |
| - name: Copy model folder for Linux | |
| run: cp -r ./model ./target/release/ | |
| - name: Zip Linux artifacts | |
| run: | | |
| cd ./target/release | |
| zip -r linux-x86_64.zip ddddocr model | |
| mv linux-x86_64.zip ../linux-x86_64.zip | |
| - name: Upload Linux artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-unknown-linux-gnu | |
| path: ./target/linux-x86_64.zip | |
| build-linux-inline: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for Linux (inline-model) | |
| run: cargo build --release | |
| - name: Zip Linux inline artifacts | |
| run: | | |
| cd ./target/release | |
| zip -r linux-x86_64-inline.zip ddddocr | |
| mv linux-x86_64-inline.zip ../linux-x86_64-inline.zip | |
| - name: Upload Linux inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-unknown-linux-gnu-inline | |
| path: ./target/linux-x86_64-inline.zip | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for macOS (non-inline) | |
| run: cargo build --release --no-default-features --features "download-binaries" | |
| - name: Copy model folder for macOS | |
| run: cp -r ./model ./target/release/ | |
| - name: Zip macOS artifacts | |
| run: | | |
| cd ./target/release | |
| zip -r macos-x86_64.zip ddddocr model | |
| mv macos-x86_64.zip ../macos-x86_64.zip | |
| - name: Upload macOS artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-apple-darwin | |
| path: ./target/macos-x86_64.zip | |
| build-macos-inline: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for macOS (inline-model) | |
| run: cargo build --release | |
| - name: Zip macOS inline artifacts | |
| run: | | |
| cd ./target/release | |
| zip -r macos-x86_64-inline.zip ddddocr | |
| mv macos-x86_64-inline.zip ../macos-x86_64-inline.zip | |
| - name: Upload macOS inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: x86_64-apple-darwin-inline | |
| path: ./target/macos-x86_64-inline.zip | |
| build-aarch64-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install stable Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| - name: Add AArch64 target for Linux | |
| run: rustup target add aarch64-unknown-linux-gnu | |
| - name: Install AArch64 Linux dependencies | |
| run: sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu build-essential libc6-dev-arm64-cross | |
| - name: Build project for AArch64 Linux (non-inline) | |
| run: | | |
| export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc | |
| export RUSTFLAGS="-L /usr/aarch64-linux-gnu/lib" | |
| cargo build --release --target aarch64-unknown-linux-gnu --no-default-features --features "download-binaries" | |
| - name: Copy model folder for AArch64 Linux | |
| run: cp -r ./model ./target/aarch64-unknown-linux-gnu/release/ | |
| - name: Zip AArch64 Linux artifacts | |
| run: | | |
| cd ./target/aarch64-unknown-linux-gnu/release | |
| zip -r aarch64-linux.zip ddddocr model | |
| mv aarch64-linux.zip ../../aarch64-unknown-linux-gnu.zip | |
| - name: Upload AArch64 Linux artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: aarch64-unknown-linux-gnu | |
| path: ./target/aarch64-unknown-linux-gnu.zip | |
| build-aarch64-linux-inline: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install stable Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| - name: Add AArch64 target | |
| run: rustup target add aarch64-unknown-linux-gnu | |
| - name: Install dependencies | |
| run: sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu build-essential libc6-dev-arm64-cross | |
| - name: Build project for AArch64 Linux (inline-model) | |
| run: | | |
| export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc | |
| export RUSTFLAGS="-L /usr/aarch64-linux-gnu/lib" | |
| cargo build --release --target aarch64-unknown-linux-gnu | |
| - name: Zip inline AArch64 Linux artifacts | |
| run: | | |
| cd ./target/aarch64-unknown-linux-gnu/release | |
| zip -r aarch64-linux-inline.zip ddddocr | |
| mv aarch64-linux-inline.zip ../../aarch64-unknown-linux-gnu-inline.zip | |
| - name: Upload AArch64 Linux inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: aarch64-unknown-linux-gnu-inline | |
| path: ./target/aarch64-unknown-linux-gnu-inline.zip | |
| build-aarch64-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for AArch64 macOS (non-inline) | |
| run: cargo build --release --target aarch64-apple-darwin --no-default-features --features "download-binaries" | |
| - name: Copy model folder | |
| run: cp -r ./model ./target/aarch64-apple-darwin/release/ | |
| - name: Zip AArch64 macOS artifacts | |
| run: | | |
| cd ./target/aarch64-apple-darwin/release | |
| zip -r aarch64-macos.zip ddddocr model | |
| mv aarch64-macos.zip ../../aarch64-apple-darwin.zip | |
| - name: Upload AArch64 macOS artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: aarch64-apple-darwin | |
| path: ./target/aarch64-apple-darwin.zip | |
| build-aarch64-macos-inline: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build project for AArch64 macOS (inline-model) | |
| run: cargo build --release --target aarch64-apple-darwin | |
| - name: Zip inline AArch64 macOS artifacts | |
| run: | | |
| cd ./target/aarch64-apple-darwin/release | |
| zip -r aarch64-macos-inline.zip ddddocr | |
| mv aarch64-macos-inline.zip ../../aarch64-apple-darwin-inline.zip | |
| - name: Upload AArch64 macOS inline artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: aarch64-apple-darwin-inline | |
| path: ./target/aarch64-apple-darwin-inline.zip | |
| release: | |
| permissions: | |
| contents: write | |
| if: ${{ github.event.inputs.publish }} | |
| needs: | |
| - build-windows-x86 | |
| - build-windows-x64 | |
| - build-windows-x86-inline | |
| - build-windows-x64-inline | |
| - build-linux | |
| - build-linux-inline | |
| - build-macos | |
| - build-macos-inline | |
| - build-aarch64-linux | |
| - build-aarch64-linux-inline | |
| - build-aarch64-macos | |
| - build-aarch64-macos-inline | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Create GitHub Release | |
| uses: actions/create-release@v1 | |
| with: | |
| tag_name: ${{ github.event.inputs.version }} | |
| release_name: ${{ github.event.inputs.version }} | |
| body: ${{ github.event.inputs.description }} | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: '**' | |
| merge-multiple: true | |
| path: artifacts/ | |
| - name: List artifacts folder tree | |
| run: | | |
| echo "artifacts/ 目录结构:" | |
| tree artifacts || ls -R artifacts | |
| shell: bash | |
| - name: Attach artifacts to Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: ${{ github.event.inputs.version }} | |
| files: artifacts/* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |