Kiwi/.github/workflows/release.yml
2025-11-16 21:01:46 +09:00

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