233 lines
7.6 KiB
YAML
233 lines
7.6 KiB
YAML
name: mnn_release
|
|
on:
|
|
push:
|
|
tags:
|
|
- '*'
|
|
- '!Android*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
setup:
|
|
permissions:
|
|
contents: none
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
VERSION: ${{ steps.get_version.outputs.VERSION }}
|
|
steps:
|
|
- name: get-version
|
|
id: get_version
|
|
run: |
|
|
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
|
# 提取标签版本号
|
|
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
else
|
|
# 如果不是标签,则设置版本为 'dev'
|
|
echo "VERSION=dev" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
linux-release:
|
|
needs: [setup]
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_linux_x64_cpu_opencl_vulkan
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: build
|
|
run: |
|
|
# j24 -> j4 avoid ld signal 9
|
|
sed -i "s/-j24/-j4/g" package_scripts/linux/build_lib.sh
|
|
# LLM (+ vision/audio) is already enabled in build_lib.sh by default.
|
|
./package_scripts/linux/build_lib.sh -o ${{ env.PACKAGENAME }}/lib -b opencl,vulkan -s -c
|
|
- name: package
|
|
run: |
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
windows-release:
|
|
needs: [setup]
|
|
runs-on: windows-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_windows_x64_cpu_opencl_vulkan_avx512
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: using msvc
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- name: build
|
|
# LLM (+ vision/audio) + OpenCL + Vulkan + AVX512 are already enabled in
|
|
# build_lib_release.ps1 by default.
|
|
run: powershell .\package_scripts\win\build_lib_release.ps1 -path ${{ env.PACKAGENAME }}
|
|
- name: package
|
|
run: 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
macos-release:
|
|
needs: [setup]
|
|
runs-on: macos-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_macos_x64_arm82_cpu_opencl_metal
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
|
|
- name: build
|
|
# Pass release-specific cmake args via `$*` (forwarded to cmake by buildFrameWork.sh).
|
|
# - MNN_BUILD_LLM=ON implicitly enables MNN_LOW_MEMORY + MNN_SUPPORT_TRANSFORMER_FUSE
|
|
# - MNN_BUILD_LLM_OMNI=ON implicitly enables MNN_BUILD_OPENCV / MNN_BUILD_AUDIO / MNN_IMGCODECS
|
|
# which in turn auto-define LLM_SUPPORT_VISION / LLM_SUPPORT_AUDIO inside the llm engine.
|
|
run: |
|
|
./package_scripts/mac/buildFrameWork.sh \
|
|
-DMNN_BUILD_LLM=ON \
|
|
-DMNN_BUILD_LLM_OMNI=ON
|
|
- name: package
|
|
run: |
|
|
rm -rf ${{ env.PACKAGENAME }}
|
|
mv MNN-MacOS-CPU-GPU ${{ env.PACKAGENAME }}
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
android-release:
|
|
needs: [setup]
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_android_armv7_armv8_cpu_opencl_vulkan
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: setup-ndk
|
|
uses: nttld/setup-ndk@v1
|
|
id: setup-ndk
|
|
with:
|
|
# NDK r27+ is required for 16KB page-size support (Android 15+).
|
|
# r27 dropped support for API < 21, so 32-bit armv7 must use API >= 21.
|
|
ndk-version: r27c
|
|
add-to-path: false
|
|
- name: build
|
|
# build.sh already enables LLM + OpenCV + Vulkan + OpenCL + multi-modal by default.
|
|
# We inject the following extras via sed (script kept unchanged):
|
|
# * -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON -- enables 16KB page size
|
|
# (Google Play requirement starting Nov 2025)
|
|
# * Bump 32-bit armv7 API level android-14 -> android-21 (NDK r27 minimum)
|
|
env:
|
|
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
|
|
run: |
|
|
sed -i 's|^CMAKEARGS="\(.*\)"$|CMAKEARGS="\1 -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"|' \
|
|
package_scripts/android/build.sh
|
|
sed -i 's|android-14|android-21|g' package_scripts/android/build.sh
|
|
./package_scripts/android/build.sh -o ${{ env.PACKAGENAME }}
|
|
- name: package
|
|
run: |
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
harmony-release:
|
|
needs: [setup]
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_harmony_arm64_cpu
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Setup OpenHarmony SDK
|
|
id: setup-ohos
|
|
uses: openharmony-rs/setup-ohos-sdk@v1.0.0
|
|
with:
|
|
# OpenHarmony 5.0.0 == API 12. Bump when a newer SDK is well tested.
|
|
version: '5.0.0'
|
|
- name: build
|
|
# package_scripts/harmony/build.sh already enables LLM + multi-modal +
|
|
# ARM82 + SME2 + BF16. It reads $OHOS_SDK_NATIVE (set below) to locate
|
|
# the OHOS cmake toolchain file.
|
|
env:
|
|
OHOS_SDK_NATIVE: ${{ steps.setup-ohos.outputs.ohos_sdk_native }}
|
|
run: ./package_scripts/harmony/build.sh -o ${{ env.PACKAGENAME }}
|
|
- name: package
|
|
run: |
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
ios-release:
|
|
needs: [setup]
|
|
runs-on: macos-latest
|
|
env:
|
|
PACKAGENAME: mnn_${{ needs.setup.outputs.VERSION }}_ios_armv82_cpu_metal
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
|
|
- name: build
|
|
# Pass release-specific cmake args via `$*` (forwarded to cmake by buildiOS.sh).
|
|
# - MNN_BUILD_LLM=ON implicitly enables MNN_LOW_MEMORY + MNN_SUPPORT_TRANSFORMER_FUSE
|
|
# - MNN_BUILD_LLM_OMNI=ON implicitly enables MNN_BUILD_OPENCV / MNN_BUILD_AUDIO / MNN_IMGCODECS
|
|
# which in turn auto-define LLM_SUPPORT_VISION / LLM_SUPPORT_AUDIO inside the llm engine.
|
|
run: |
|
|
brew install coreutils
|
|
./package_scripts/ios/buildiOS.sh \
|
|
-DMNN_BUILD_LLM=ON \
|
|
-DMNN_BUILD_LLM_OMNI=ON
|
|
|
|
- name: package
|
|
run: |
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip MNN-iOS-CPU-GPU/Static/MNN.framework
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
upload-release:
|
|
name: upload_to_release
|
|
needs: [linux-release, windows-release, macos-release, android-release, ios-release, harmony-release]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: artifact-*
|
|
path: assert
|
|
merge-multiple: true
|
|
|
|
- name: show file
|
|
run: ls assert
|
|
|
|
- uses: xresloader/upload-to-github-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
file: assert/*.zip
|
|
tags: true
|
|
draft: true
|