mirror of
https://github.com/bab2min/Kiwi.git
synced 2026-06-17 01:54:27 +00:00
345 lines
12 KiB
YAML
345 lines
12 KiB
YAML
name: Publish Release assets
|
|
|
|
on:
|
|
release:
|
|
types: [created]
|
|
|
|
jobs:
|
|
build-centos7:
|
|
name: Centos7
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Get release
|
|
id: get_release
|
|
uses: bruceadams/get-release@v1.3.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
|
with:
|
|
image: quay.io/pypa/manylinux2014_x86_64
|
|
githubToken: ${{ github.token }}
|
|
multipleRun: |
|
|
- name: Update CMake
|
|
run: |
|
|
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
|
yum install java-1.8.0-openjdk-devel.x86_64 -y
|
|
- name: Configure Build
|
|
run: mkdir build && cd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_JAVA_BINDING=1 ..
|
|
- name: Build
|
|
run: cd build && make -j2
|
|
- run: |
|
|
mkdir result
|
|
cd result
|
|
mkdir include && mkdir lib && mkdir bin
|
|
mv ../build/libkiwi* lib/
|
|
mv ../build/kiwi-* bin/
|
|
mv ../build/test/kiwi-* bin/
|
|
cp -r ../include/kiwi include/
|
|
tar -zcvf ../asset.tgz include/ lib/ bin/
|
|
- run: |
|
|
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
|
- name: Upload release binary
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: asset.tgz
|
|
asset_name: kiwi_lnx_x86_64_${{ steps.get_release.outputs.tag_name }}.tgz
|
|
asset_content_type: application/octet-stream
|
|
- name: Upload release jar
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: kiwi-java.jar
|
|
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-lnx-x86-64.jar
|
|
asset_content_type: application/octet-stream
|
|
|
|
build-macos:
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
runs-on: macos-15
|
|
name: macOS - ${{ matrix.arch }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
lfs: true
|
|
- name: Get release
|
|
id: get_release
|
|
uses: bruceadams/get-release@v1.3.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
- name: Configure Build
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 -DKIWI_CPU_ARCH=${{ matrix.arch }} -DKIWI_JAVA_BINDING=1 ..
|
|
- name: Build
|
|
run: cd build && make -j2
|
|
- run: |
|
|
mkdir result
|
|
cd result
|
|
mkdir include && mkdir lib && mkdir bin
|
|
mv ../build/libkiwi* lib/
|
|
mv ../build/kiwi-* bin/
|
|
mv ../build/test/kiwi-* bin/
|
|
cp -r ../include/kiwi include/
|
|
tar -zcvf ../asset.tgz include/ lib/ bin/
|
|
- name: Upload release binary
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: asset.tgz
|
|
asset_name: kiwi_mac_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.tgz
|
|
asset_content_type: application/octet-stream
|
|
- run: |
|
|
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
|
- name: Upload release jar
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: kiwi-java.jar
|
|
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-mac-${{ matrix.arch }}.jar
|
|
asset_content_type: application/octet-stream
|
|
- if: matrix.arch == 'arm64'
|
|
run: tar -zcvf model.tgz models/cong/base/sj.* models/cong/base/extract.mdl models/cong/base/*.dict models/cong/base/combiningRule.txt models/cong/base/*.mdl
|
|
- name: Upload release binary
|
|
if: matrix.arch == 'arm64'
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: model.tgz
|
|
asset_name: kiwi_model_${{ steps.get_release.outputs.tag_name }}_base.tgz
|
|
asset_content_type: application/octet-stream
|
|
|
|
build-windows:
|
|
strategy:
|
|
matrix:
|
|
os: [windows-2022]
|
|
arch: [Win32, x64]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
name: ${{ matrix.os }} ${{ matrix.arch }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
lfs: true
|
|
- name: Get release
|
|
id: get_release
|
|
uses: bruceadams/get-release@v1.2.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
- name: Init
|
|
run: |
|
|
mkdir build
|
|
- name: Build
|
|
uses: lukka/run-cmake@v3
|
|
with:
|
|
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
|
cmakeBuildType: Release
|
|
buildWithCMake: true
|
|
cmakeAppendedArgs: -G"Visual Studio 17 2022" -A${{ matrix.arch }} -DKIWI_JAVA_BINDING=1
|
|
buildWithCMakeArgs: --config Release
|
|
buildDirectory: build
|
|
- run: |
|
|
mkdir result
|
|
cd result
|
|
mkdir include; mkdir lib; mkdir bin
|
|
mv ..\build\Release\*.dll lib\
|
|
mv ..\build\Release\*.exp lib\
|
|
mv ..\build\Release\*.lib lib\
|
|
mv ..\build\Release\*.exe bin\
|
|
mv ..\build\test\Release\*.exe bin\
|
|
cp -r ..\include\kiwi include\
|
|
Compress-Archive -Path 'include', 'lib', 'bin' -DestinationPath ..\asset.zip
|
|
- name: Upload release binary
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: asset.zip
|
|
asset_name: kiwi_win_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.zip
|
|
asset_content_type: application/octet-stream
|
|
- run: |
|
|
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
|
- name: Upload release jar
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: kiwi-java.jar
|
|
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-win-${{ matrix.arch }}.jar
|
|
asset_content_type: application/octet-stream
|
|
|
|
build-other-arch:
|
|
strategy:
|
|
matrix:
|
|
arch: [aarch64, ppc64le]
|
|
name: Centos7-${{ matrix.arch }}
|
|
runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
lfs: true
|
|
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
|
id: runcmd
|
|
with:
|
|
image: quay.io/pypa/manylinux2014_${{ matrix.arch }}
|
|
githubToken: ${{ github.token }}
|
|
setup: |
|
|
mkdir -p "${PWD}/artifacts"
|
|
dockerRunArgs: |
|
|
--volume "${PWD}/artifacts:/artifacts"
|
|
multipleRun: |
|
|
- name: Install dependencies
|
|
run: |
|
|
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
|
yum install java-1.8.0-openjdk-devel -y
|
|
- name: Build
|
|
run: |
|
|
mkdir build && pushd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_USE_MIMALLOC=0 -DKIWI_JAVA_BINDING=1 ..
|
|
make -j2 && popd
|
|
- name: Release
|
|
run: |
|
|
cd build
|
|
mkdir include && mkdir lib && mkdir bin
|
|
mv libkiwi* lib/
|
|
mv kiwi-* bin/
|
|
mv test/kiwi-* bin/
|
|
cp -r ../include/kiwi include/
|
|
tar -zcvf /artifacts/asset.tgz include/ lib/ bin/
|
|
mv bindings/java/kiwi-java*.jar /artifacts/kiwi-java.jar
|
|
- name: Get release
|
|
id: get_release
|
|
uses: bruceadams/get-release@v1.2.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
- name: Upload release binary
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: artifacts/asset.tgz
|
|
asset_name: kiwi_lnx_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.tgz
|
|
asset_content_type: application/octet-stream
|
|
- name: Upload release jar
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: artifacts/kiwi-java.jar
|
|
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-lnx-${{ matrix.arch }}.jar
|
|
asset_content_type: application/octet-stream
|
|
|
|
build-android:
|
|
name: Android ARM64
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
lfs: true
|
|
- name: Get release
|
|
id: get_release
|
|
uses: bruceadams/get-release@v1.3.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
- name: Setup Android NDK
|
|
uses: nttld/setup-ndk@v1
|
|
with:
|
|
ndk-version: r25c
|
|
add-to-path: true
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'temurin'
|
|
- name: Setup Gradle
|
|
uses: gradle/gradle-build-action@v2
|
|
- name: Grant execute permission for gradlew
|
|
run: |
|
|
chmod +x bindings/java/gradlew
|
|
- name: Build Android AAR
|
|
run: |
|
|
cd bindings/java
|
|
./gradlew assembleRelease
|
|
- name: Package Android AAR release
|
|
run: |
|
|
cd bindings/java
|
|
# Copy the built AAR with correct name
|
|
find build/outputs/aar/ -name "*.aar" -exec cp {} kiwi-android.aar \; 2>/dev/null || echo "AAR file not found, checking directory structure"
|
|
echo "Contents of build/outputs/:"
|
|
find build/outputs/ -type f 2>/dev/null || echo "build/outputs/ not found"
|
|
|
|
# Also create a traditional native library package for backwards compatibility
|
|
mkdir -p result/include result/lib
|
|
find build -name "*.so" -exec cp {} result/lib/ \; 2>/dev/null || echo "No .so files found"
|
|
cp -r ../../include/kiwi result/include/ 2>/dev/null || echo "Include directory not found"
|
|
cd result && tar -zcvf ../kiwi_android_arm64_compat.tgz include/ lib/ && cd ..
|
|
- name: Upload Android AAR
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: bindings/java/kiwi-android.aar
|
|
asset_name: kiwi-android-${{ steps.get_release.outputs.tag_name }}.aar
|
|
asset_content_type: application/octet-stream
|
|
- name: Upload Android native library (compatibility)
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
asset_path: bindings/java/kiwi_android_arm64_compat.tgz
|
|
asset_name: kiwi_android_arm64_${{ steps.get_release.outputs.tag_name }}.tgz
|
|
asset_content_type: application/octet-stream
|
|
|
|
build-emscripten:
|
|
name: Emscripten
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
lfs: true
|
|
- uses: mymindstorm/setup-emsdk@v14
|
|
- name: Build
|
|
run: |
|
|
cd bindings/wasm
|
|
./build.sh
|
|
- uses: JS-DevTools/npm-publish@v3
|
|
with:
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
package: bindings/wasm/package
|
|
- name: Build documenation
|
|
run: |
|
|
cd bindings/wasm/package
|
|
npm run doc
|
|
- name: Publish documenation
|
|
uses: peaceiris/actions-gh-pages@v3
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: bindings/wasm/package/doc
|
|
destination_dir: ./kiwi-nlp
|