name: release-nuget-package on: workflow_dispatch: concurrency: group: release-nuget-package cancel-in-progress: true permissions: contents: read jobs: build-libs: name: ${{ matrix.os }} ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-2022] arch: [x64, x86, arm64] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build sherpa-onnx shell: bash run: | arch=${{ matrix.arch }} opts="" if [ $arch == x86 ]; then opts="-A Win32" elif [ $arch == arm64 ]; then opts="-A ARM64" fi mkdir build cd build cmake \ $opts \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=./install \ -DCMAKE_BUILD_TYPE=Release \ -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \ -DBUILD_ESPEAK_NG_EXE=OFF \ -DSHERPA_ONNX_BUILD_C_API_EXAMPLES=OFF \ -DSHERPA_ONNX_ENABLE_BINARY=ON \ .. cmake --build . --target install --config Release rm -rf install/pkgconfig - name: Create tar file shell: bash run: | arch=${{ matrix.arch }} cd build SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ../CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) dst=sherpa-onnx-$SHERPA_ONNX_VERSION-win-$arch mv install/lib $dst tar cjvf $dst.tar.bz2 $dst ls -lh *.tar.bz2 mv *.tar.bz2 ../ - uses: actions/upload-artifact@v4 with: name: windows-${{ matrix.arch }} path: ./*.tar.bz2 # https://huggingface.co/docs/hub/spaces-github-actions - name: Publish to huggingface if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') env: HF_TOKEN: ${{ secrets.HF_TOKEN }} uses: nick-fields/retry@v3 with: max_attempts: 20 timeout_seconds: 200 shell: bash command: | SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) git config --global user.email "csukuangfj@gmail.com" git config --global user.name "Fangjun Kuang" rm -rf huggingface export GIT_CLONE_PROTECTION_ACTIVE=false export GIT_LFS_SKIP_SMUDGE=1 git clone https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs huggingface cd huggingface git fetch git pull dst=windows-for-dotnet/$SHERPA_ONNX_VERSION mkdir -p $dst cp -v ../sherpa-onnx-*.tar.bz2 $dst/ git status git lfs track "*.bz2" git add . git commit -m "add more files" git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main rm -rf huggingface release-nuget-package: runs-on: ${{ matrix.os }} needs: [build-libs] strategy: fail-fast: false matrix: os: [ubuntu-latest] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Install Python dependencies shell: bash run: | python3 -m pip install --upgrade pip Jinja2 - name: Retrieve artifact from windows x64 uses: actions/download-artifact@v4 with: name: windows-x64 path: /tmp/windows-x64 - name: Retrieve artifact from windows x86 uses: actions/download-artifact@v4 with: name: windows-x86 path: /tmp/windows-x86 - name: Retrieve artifact from windows arm64 uses: actions/download-artifact@v4 with: name: windows-arm64 path: /tmp/windows-arm64 - name: Check dotnet run: dotnet --info - name: Build shell: bash run: | sudo apt-get install -y tree ls -lh /tmp/ tree /tmp/windows* echo "----" rm -fv /tmp/windows*/*.lib tree /tmp/windows* - name: Build shell: bash run: | cd scripts/dotnet ./run.sh ls -lh /tmp/packages - name: publish .Net packages to nuget.org if: github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa' shell: bash env: API_KEY: ${{ secrets.NUGET_API_KEY }} run: | # API_KEY is valid until 2025.04.26 cd /tmp/packages dotnet nuget push ./org.k2fsa.sherpa.onnx.*.nupkg --skip-duplicate --api-key $API_KEY --source https://api.nuget.org/v3/index.json