name: npm-addon-macos on: push: branches: - node-addon workflow_dispatch: concurrency: group: npm-addon-macos-${{ github.ref }} cancel-in-progress: true permissions: contents: read id-token: write jobs: npm-addon-macos: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-13, macos-14] python-version: ["3.8"] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Update pip shell: bash run: | pip install -U pip - uses: actions/setup-node@v4 with: registry-url: 'https://registry.npmjs.org' - name: Display node version shell: bash run: | node --version - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-release-shared - name: Build sherpa-onnx shell: bash run: | export CMAKE_CXX_COMPILER_LAUNCHER=ccache export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" mkdir build cd build cmake \ -DCMAKE_INSTALL_PREFIX=./install \ -DBUILD_SHARED_LIBS=ON \ -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \ -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ -DSHERPA_ONNX_ENABLE_BINARY=OFF \ .. make -j install - name: Build sherpa-onnx node-addon shell: bash run: | d=$PWD export SHERPA_ONNX_INSTALL_DIR=$d/build/install cd scripts/node-addon-api/ npm i ./node_modules/.bin/cmake-js compile --log-level verbose - name: Prepare for publish shell: bash run: | owner=${{ github.repository_owner }} export owner ls -lh build/install/lib/ echo "---" # find build/install/lib/ -maxdepth 1 -type l # find build/install/lib/ -maxdepth 1 -type l -delete # echo "---" # ls -lh build/install/lib/ .github/scripts/node-addon/run.sh - name: Display files to be published shell: bash run: | ls -lh ./sherpa-onnx-node tar cjvf ./sherpa-onnx-node.tar.bz2 ./sherpa-onnx-node - uses: actions/upload-artifact@v4 with: name: sherpa-onnx-${{ matrix.os }} path: ./sherpa-onnx-node.tar.bz2 - name: Publish shell: bash env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | cd ./sherpa-onnx-node npm install npm ci # see https://docs.npmjs.com/generating-provenance-statements npm publish --provenance --access public