Skip to content

build

build #28

Workflow file for this run

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: Archive artifacts for Windows x86
uses: actions/upload-artifact@v4
with:
name: i686-pc-windows-msvc
path: |
./target/i686-pc-windows-msvc/release/ddddocr.exe
./target/i686-pc-windows-msvc/release/model
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: Archive artifacts for Windows x64
uses: actions/upload-artifact@v4
with:
name: x86_64-pc-windows-msvc
path: |
./target/release/ddddocr.exe
./target/release/model
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: Archive artifacts for Windows x86 (inline-model)
uses: actions/upload-artifact@v4
with:
name: i686-pc-windows-msvc-inline
path: ./target/i686-pc-windows-msvc/release/ddddocr.exe
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: Archive artifacts for Windows x64 (inline-model)
uses: actions/upload-artifact@v4
with:
name: x86_64-pc-windows-msvc-inline
path: ./target/release/ddddocr.exe
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: Archive artifacts for Linux
uses: actions/upload-artifact@v4
with:
name: x86_64-unknown-linux-gnu
path: |
./target/release/ddddocr
./target/release/model
build-linux-inline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build project for Linux (inline-model)
run: cargo build --release
- name: Archive artifacts for Linux (inline-model)
uses: actions/upload-artifact@v4
with:
name: x86_64-unknown-linux-gnu-inline
path: ./target/release/ddddocr
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: Archive artifacts for macOS
uses: actions/upload-artifact@v4
with:
name: x86_64-apple-darwin
path: |
./target/release/ddddocr
./target/release/model
build-macos-inline:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Build project for macOS (inline-model)
run: cargo build --release
- name: Archive artifacts for macOS (inline-model)
uses: actions/upload-artifact@v4
with:
name: x86_64-apple-darwin-inline
path: ./target/release/ddddocr
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 toolchain and 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: Archive artifacts for AArch64 Linux
uses: actions/upload-artifact@v4
with:
name: aarch64-unknown-linux-gnu
path: |
./target/aarch64-unknown-linux-gnu/release/ddddocr
./target/aarch64-unknown-linux-gnu/release/model
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 for Linux
run: rustup target add aarch64-unknown-linux-gnu
- name: Install AArch64 Linux toolchain and 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: Archive artifacts for AArch64 Linux (inline-model)
uses: actions/upload-artifact@v4
with:
name: aarch64-unknown-linux-gnu-inline
path: ./target/aarch64-unknown-linux-gnu/release/ddddocr
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 for AArch64 macOS
run: cp -r ./model ./target/aarch64-apple-darwin/release/
- name: Archive artifacts for AArch64 macOS
uses: actions/upload-artifact@v4
with:
name: aarch64-apple-darwin
path: |
./target/aarch64-apple-darwin/release/ddddocr
./target/aarch64-apple-darwin/release/model
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: Archive artifacts for AArch64 macOS (inline-model)
uses: actions/upload-artifact@v4
with:
name: aarch64-apple-darwin-inline
path: ./target/aarch64-apple-darwin/release/ddddocr
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: Attach artifacts to Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload each artifact via gh
run: |
for file in artifacts/*; do
gh release upload ${{ github.event.inputs.version }} "$file"
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}