diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 58970995..efce7d1a 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -159,7 +159,7 @@ jobs: - name: Install common dependencies run: | apk add protobuf-dev curl clang mold grep npm bash - curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y --default-toolchain 1.80.0 + curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y echo "source $HOME/.cargo/env" >> saved_env echo "export CC=clang" >> saved_env echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=-crt-static,+avx2,+fma,+f16c -Clinker=clang -Clink-arg=-fuse-ld=mold'" >> saved_env @@ -167,7 +167,7 @@ jobs: if: ${{ matrix.config.arch == 'aarch64' }} run: | source "$HOME/.cargo/env" - rustup target add aarch64-unknown-linux-musl --toolchain 1.80.0 + rustup target add aarch64-unknown-linux-musl crt=$(realpath $(dirname $(rustup which rustc))/../lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained) sysroot_lib=/usr/aarch64-unknown-linux-musl/usr/lib apk_url=https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/aarch64/ @@ -262,7 +262,7 @@ jobs: - name: Install common dependencies run: | apk add protobuf-dev curl clang mold grep npm bash openssl-dev openssl-libs-static - curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y --default-toolchain 1.80.0 + curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y echo "source $HOME/.cargo/env" >> saved_env echo "export CC=clang" >> saved_env echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=-crt-static,+avx2,+fma,+f16c -Clinker=clang -Clink-arg=-fuse-ld=mold'" >> saved_env @@ -272,7 +272,7 @@ jobs: if: ${{ matrix.config.arch == 'aarch64' }} run: | source "$HOME/.cargo/env" - rustup target add aarch64-unknown-linux-musl --toolchain 1.80.0 + rustup target add aarch64-unknown-linux-musl crt=$(realpath $(dirname $(rustup which rustc))/../lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained) sysroot_lib=/usr/aarch64-unknown-linux-musl/usr/lib apk_url=https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/aarch64/ @@ -334,176 +334,178 @@ jobs: path: | node/dist/lancedb-vectordb-win32*.tgz - node-windows-arm64: - name: vectordb ${{ matrix.config.arch }}-pc-windows-msvc - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - container: alpine:edge - strategy: - fail-fast: false - matrix: - config: - # - arch: x86_64 - - arch: aarch64 - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install dependencies - run: | - apk add protobuf-dev curl clang lld llvm19 grep npm bash msitools sed - curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y --default-toolchain 1.80.0 - echo "source $HOME/.cargo/env" >> saved_env - echo "export CC=clang" >> saved_env - echo "export AR=llvm-ar" >> saved_env - source "$HOME/.cargo/env" - rustup target add ${{ matrix.config.arch }}-pc-windows-msvc --toolchain 1.80.0 - (mkdir -p sysroot && cd sysroot && sh ../ci/sysroot-${{ matrix.config.arch }}-pc-windows-msvc.sh) - echo "export C_INCLUDE_PATH=/usr/${{ matrix.config.arch }}-pc-windows-msvc/usr/include" >> saved_env - echo "export CARGO_BUILD_TARGET=${{ matrix.config.arch }}-pc-windows-msvc" >> saved_env - - name: Configure x86_64 build - if: ${{ matrix.config.arch == 'x86_64' }} - run: | - echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=+crt-static,+avx2,+fma,+f16c -Clinker=lld -Clink-arg=/LIBPATH:/usr/x86_64-pc-windows-msvc/usr/lib'" >> saved_env - - name: Configure aarch64 build - if: ${{ matrix.config.arch == 'aarch64' }} - run: | - echo "export RUSTFLAGS='-Ctarget-feature=+crt-static,+neon,+fp16,+fhm,+dotprod -Clinker=lld -Clink-arg=/LIBPATH:/usr/aarch64-pc-windows-msvc/usr/lib -Clink-arg=arm64rt.lib'" >> saved_env - - name: Build Windows Artifacts - run: | - source ./saved_env - bash ci/manylinux_node/build_vectordb.sh ${{ matrix.config.arch }} ${{ matrix.config.arch }}-pc-windows-msvc - - name: Upload Windows Artifacts - uses: actions/upload-artifact@v4 - with: - name: node-native-windows-${{ matrix.config.arch }} - path: | - node/dist/lancedb-vectordb-win32*.tgz + # TODO: https://github.com/lancedb/lancedb/issues/1975 + # node-windows-arm64: + # name: vectordb ${{ matrix.config.arch }}-pc-windows-msvc + # # if: startsWith(github.ref, 'refs/tags/v') + # runs-on: ubuntu-latest + # container: alpine:edge + # strategy: + # fail-fast: false + # matrix: + # config: + # # - arch: x86_64 + # - arch: aarch64 + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + # - name: Install dependencies + # run: | + # apk add protobuf-dev curl clang lld llvm19 grep npm bash msitools sed + # curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y + # echo "source $HOME/.cargo/env" >> saved_env + # echo "export CC=clang" >> saved_env + # echo "export AR=llvm-ar" >> saved_env + # source "$HOME/.cargo/env" + # rustup target add ${{ matrix.config.arch }}-pc-windows-msvc + # (mkdir -p sysroot && cd sysroot && sh ../ci/sysroot-${{ matrix.config.arch }}-pc-windows-msvc.sh) + # echo "export C_INCLUDE_PATH=/usr/${{ matrix.config.arch }}-pc-windows-msvc/usr/include" >> saved_env + # echo "export CARGO_BUILD_TARGET=${{ matrix.config.arch }}-pc-windows-msvc" >> saved_env + # - name: Configure x86_64 build + # if: ${{ matrix.config.arch == 'x86_64' }} + # run: | + # echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=+crt-static,+avx2,+fma,+f16c -Clinker=lld -Clink-arg=/LIBPATH:/usr/x86_64-pc-windows-msvc/usr/lib'" >> saved_env + # - name: Configure aarch64 build + # if: ${{ matrix.config.arch == 'aarch64' }} + # run: | + # echo "export RUSTFLAGS='-Ctarget-feature=+crt-static,+neon,+fp16,+fhm,+dotprod -Clinker=lld -Clink-arg=/LIBPATH:/usr/aarch64-pc-windows-msvc/usr/lib -Clink-arg=arm64rt.lib'" >> saved_env + # - name: Build Windows Artifacts + # run: | + # source ./saved_env + # bash ci/manylinux_node/build_vectordb.sh ${{ matrix.config.arch }} ${{ matrix.config.arch }}-pc-windows-msvc + # - name: Upload Windows Artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: node-native-windows-${{ matrix.config.arch }} + # path: | + # node/dist/lancedb-vectordb-win32*.tgz - nodejs-windows: - name: lancedb ${{ matrix.target }} - runs-on: windows-2022 - # Only runs on tags that matches the make-release action - if: startsWith(github.ref, 'refs/tags/v') - strategy: - fail-fast: false - matrix: - target: [x86_64-pc-windows-msvc] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Protoc v21.12 - working-directory: C:\ - run: | - New-Item -Path 'C:\protoc' -ItemType Directory - Set-Location C:\protoc - Invoke-WebRequest https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-win64.zip -OutFile C:\protoc\protoc.zip - 7z x protoc.zip - Add-Content $env:GITHUB_PATH "C:\protoc\bin" - shell: powershell - - name: Install npm dependencies - run: | - cd nodejs - npm ci - - name: Build Windows native node modules - run: .\ci\build_windows_artifacts_nodejs.ps1 ${{ matrix.target }} - - name: Upload Windows Artifacts - uses: actions/upload-artifact@v4 - with: - name: nodejs-native-windows - path: | - nodejs/dist/*.node + # nodejs-windows: + # name: lancedb ${{ matrix.target }} + # runs-on: windows-2022 + # # Only runs on tags that matches the make-release action + # if: startsWith(github.ref, 'refs/tags/v') + # strategy: + # fail-fast: false + # matrix: + # target: [x86_64-pc-windows-msvc] + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + # - name: Install Protoc v21.12 + # working-directory: C:\ + # run: | + # New-Item -Path 'C:\protoc' -ItemType Directory + # Set-Location C:\protoc + # Invoke-WebRequest https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-win64.zip -OutFile C:\protoc\protoc.zip + # 7z x protoc.zip + # Add-Content $env:GITHUB_PATH "C:\protoc\bin" + # shell: powershell + # - name: Install npm dependencies + # run: | + # cd nodejs + # npm ci + # - name: Build Windows native node modules + # run: .\ci\build_windows_artifacts_nodejs.ps1 ${{ matrix.target }} + # - name: Upload Windows Artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: nodejs-native-windows + # path: | + # nodejs/dist/*.node - nodejs-windows-arm64: - name: lancedb ${{ matrix.config.arch }}-pc-windows-msvc - # Only runs on tags that matches the make-release action - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - container: alpine:edge - strategy: - fail-fast: false - matrix: - config: - # - arch: x86_64 - - arch: aarch64 - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install dependencies - run: | - apk add protobuf-dev curl clang lld llvm19 grep npm bash msitools sed - curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y --default-toolchain 1.80.0 - echo "source $HOME/.cargo/env" >> saved_env - echo "export CC=clang" >> saved_env - echo "export AR=llvm-ar" >> saved_env - source "$HOME/.cargo/env" - rustup target add ${{ matrix.config.arch }}-pc-windows-msvc --toolchain 1.80.0 - (mkdir -p sysroot && cd sysroot && sh ../ci/sysroot-${{ matrix.config.arch }}-pc-windows-msvc.sh) - echo "export C_INCLUDE_PATH=/usr/${{ matrix.config.arch }}-pc-windows-msvc/usr/include" >> saved_env - echo "export CARGO_BUILD_TARGET=${{ matrix.config.arch }}-pc-windows-msvc" >> saved_env - printf '#!/bin/sh\ncargo "$@"' > $HOME/.cargo/bin/cargo-xwin - chmod u+x $HOME/.cargo/bin/cargo-xwin - - name: Configure x86_64 build - if: ${{ matrix.config.arch == 'x86_64' }} - run: | - echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=+crt-static,+avx2,+fma,+f16c -Clinker=lld -Clink-arg=/LIBPATH:/usr/x86_64-pc-windows-msvc/usr/lib'" >> saved_env - - name: Configure aarch64 build - if: ${{ matrix.config.arch == 'aarch64' }} - run: | - echo "export RUSTFLAGS='-Ctarget-feature=+crt-static,+neon,+fp16,+fhm,+dotprod -Clinker=lld -Clink-arg=/LIBPATH:/usr/aarch64-pc-windows-msvc/usr/lib -Clink-arg=arm64rt.lib'" >> saved_env - - name: Build Windows Artifacts - run: | - source ./saved_env - bash ci/manylinux_node/build_lancedb.sh ${{ matrix.config.arch }} - - name: Upload Windows Artifacts - uses: actions/upload-artifact@v4 - with: - name: nodejs-native-windows-${{ matrix.config.arch }} - path: | - nodejs/dist/*.node + # TODO: https://github.com/lancedb/lancedb/issues/1975 + # nodejs-windows-arm64: + # name: lancedb ${{ matrix.config.arch }}-pc-windows-msvc + # # Only runs on tags that matches the make-release action + # # if: startsWith(github.ref, 'refs/tags/v') + # runs-on: ubuntu-latest + # container: alpine:edge + # strategy: + # fail-fast: false + # matrix: + # config: + # # - arch: x86_64 + # - arch: aarch64 + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + # - name: Install dependencies + # run: | + # apk add protobuf-dev curl clang lld llvm19 grep npm bash msitools sed + # curl --proto '=https' --tlsv1.3 -sSf https://raw.githubusercontent.com/rust-lang/rustup/refs/heads/master/rustup-init.sh | sh -s -- -y + # echo "source $HOME/.cargo/env" >> saved_env + # echo "export CC=clang" >> saved_env + # echo "export AR=llvm-ar" >> saved_env + # source "$HOME/.cargo/env" + # rustup target add ${{ matrix.config.arch }}-pc-windows-msvc + # (mkdir -p sysroot && cd sysroot && sh ../ci/sysroot-${{ matrix.config.arch }}-pc-windows-msvc.sh) + # echo "export C_INCLUDE_PATH=/usr/${{ matrix.config.arch }}-pc-windows-msvc/usr/include" >> saved_env + # echo "export CARGO_BUILD_TARGET=${{ matrix.config.arch }}-pc-windows-msvc" >> saved_env + # printf '#!/bin/sh\ncargo "$@"' > $HOME/.cargo/bin/cargo-xwin + # chmod u+x $HOME/.cargo/bin/cargo-xwin + # - name: Configure x86_64 build + # if: ${{ matrix.config.arch == 'x86_64' }} + # run: | + # echo "export RUSTFLAGS='-Ctarget-cpu=haswell -Ctarget-feature=+crt-static,+avx2,+fma,+f16c -Clinker=lld -Clink-arg=/LIBPATH:/usr/x86_64-pc-windows-msvc/usr/lib'" >> saved_env + # - name: Configure aarch64 build + # if: ${{ matrix.config.arch == 'aarch64' }} + # run: | + # echo "export RUSTFLAGS='-Ctarget-feature=+crt-static,+neon,+fp16,+fhm,+dotprod -Clinker=lld -Clink-arg=/LIBPATH:/usr/aarch64-pc-windows-msvc/usr/lib -Clink-arg=arm64rt.lib'" >> saved_env + # - name: Build Windows Artifacts + # run: | + # source ./saved_env + # bash ci/manylinux_node/build_lancedb.sh ${{ matrix.config.arch }} + # - name: Upload Windows Artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: nodejs-native-windows-${{ matrix.config.arch }} + # path: | + # nodejs/dist/*.node - release: - name: vectordb NPM Publish - needs: [node, node-macos, node-linux-gnu, node-linux-musl, node-windows, node-windows-arm64] - runs-on: ubuntu-latest - # Only runs on tags that matches the make-release action - if: startsWith(github.ref, 'refs/tags/v') - steps: - - uses: actions/download-artifact@v4 - with: - pattern: node-* - - name: Display structure of downloaded files - run: ls -R - - uses: actions/setup-node@v3 - with: - node-version: 20 - registry-url: "https://registry.npmjs.org" - - name: Publish to NPM - env: - NODE_AUTH_TOKEN: ${{ secrets.LANCEDB_NPM_REGISTRY_TOKEN }} - run: | - # Tag beta as "preview" instead of default "latest". See lancedb - # npm publish step for more info. - if [[ $GITHUB_REF =~ refs/tags/v(.*)-beta.* ]]; then - PUBLISH_ARGS="--tag preview" - fi + # release: + # name: vectordb NPM Publish + # needs: [node, node-macos, node-linux-gnu, node-linux-musl, node-windows] + # runs-on: ubuntu-latest + # # Only runs on tags that matches the make-release action + # if: startsWith(github.ref, 'refs/tags/v') + # steps: + # - uses: actions/download-artifact@v4 + # with: + # pattern: node-* + # - name: Display structure of downloaded files + # run: ls -R + # - uses: actions/setup-node@v3 + # with: + # node-version: 20 + # registry-url: "https://registry.npmjs.org" + # - name: Publish to NPM + # env: + # NODE_AUTH_TOKEN: ${{ secrets.LANCEDB_NPM_REGISTRY_TOKEN }} + # run: | + # # Tag beta as "preview" instead of default "latest". See lancedb + # # npm publish step for more info. + # if [[ $GITHUB_REF =~ refs/tags/v(.*)-beta.* ]]; then + # PUBLISH_ARGS="--tag preview" + # fi - mv */*.tgz . - for filename in *.tgz; do - npm publish $PUBLISH_ARGS $filename - done - - name: Notify Slack Action - uses: ravsamhq/notify-slack-action@2.3.0 - if: ${{ always() }} - with: - status: ${{ job.status }} - notify_when: "failure" - notification_title: "{workflow} is failing" - env: - SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }} + # mv */*.tgz . + # for filename in *.tgz; do + # npm publish $PUBLISH_ARGS $filename + # done + # - name: Notify Slack Action + # uses: ravsamhq/notify-slack-action@2.3.0 + # if: ${{ always() }} + # with: + # status: ${{ job.status }} + # notify_when: "failure" + # notification_title: "{workflow} is failing" + # env: + # SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }} release-nodejs: name: lancedb NPM Publish - needs: [nodejs-macos, nodejs-linux-gnu, nodejs-linux-musl, nodejs-windows, nodejs-windows-arm64] + needs: [nodejs-macos, nodejs-linux-gnu, nodejs-linux-musl, nodejs-windows] runs-on: ubuntu-latest # Only runs on tags that matches the make-release action if: startsWith(github.ref, 'refs/tags/v')