mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-13 07:12:57 +00:00
176 lines
4.6 KiB
YAML
176 lines
4.6 KiB
YAML
name: Node
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
paths:
|
|
- node/**
|
|
- rust/ffi/node/**
|
|
- .github/workflows/node.yml
|
|
|
|
env:
|
|
# Disable full debug symbol generation to speed up CI build and keep memory down
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
RUST_BACKTRACE: "1"
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint
|
|
runs-on: ubuntu-22.04
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: node
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
lfs: true
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
cache: 'npm'
|
|
cache-dependency-path: node/package-lock.json
|
|
- name: Lint
|
|
run: |
|
|
npm ci
|
|
npm run lint
|
|
linux:
|
|
name: Linux (Node ${{ matrix.node-version }})
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
node-version: [ "16", "18" ]
|
|
runs-on: "ubuntu-22.04"
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: node
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
lfs: true
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'npm'
|
|
cache-dependency-path: node/package-lock.json
|
|
- uses: Swatinem/rust-cache@v2
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y protobuf-compiler libssl-dev
|
|
- name: Build
|
|
run: |
|
|
npm ci
|
|
npm run tsc
|
|
npm run build
|
|
npm run pack-build
|
|
npm install --no-save ./dist/vectordb-*.tgz
|
|
- name: Test
|
|
run: npm run test
|
|
macos:
|
|
timeout-minutes: 30
|
|
runs-on: "macos-13"
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: node
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
lfs: true
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
cache: 'npm'
|
|
cache-dependency-path: node/package-lock.json
|
|
- uses: Swatinem/rust-cache@v2
|
|
- name: Install dependencies
|
|
run: brew install protobuf
|
|
- name: Build
|
|
run: |
|
|
npm ci
|
|
npm run tsc
|
|
npm run build
|
|
npm run pack-build
|
|
npm install --no-save ./dist/vectordb-*.tgz
|
|
- name: Test
|
|
run: |
|
|
npm run test
|
|
node-macos:
|
|
runs-on: macos-12
|
|
# needs: draft-release
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target: [x86_64-apple-darwin, aarch64-apple-darwin]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install system dependencies
|
|
run: brew install protobuf
|
|
- name: Install npm dependencies
|
|
run: |
|
|
cd node
|
|
npm ci
|
|
- name: Install rustup target
|
|
if: ${{ matrix.target == 'aarch64-apple-darwin' }}
|
|
run: rustup target add aarch64-apple-darwin
|
|
- name: Build MacOS native node modules
|
|
run: bash ci/build_macos_artifacts.sh ${{ matrix.target }}
|
|
# - uses: softprops/action-gh-release@v1
|
|
# with:
|
|
# draft: true
|
|
# files: node/dist/vectordb-darwin*.tgz
|
|
# fail_on_unmatched_files: true
|
|
|
|
node-linux:
|
|
name: node-linux (${{ matrix.arch}}-unknown-linux-${{ matrix.libc }})
|
|
runs-on: ubuntu-latest
|
|
# needs: draft-release
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
libc:
|
|
- gnu
|
|
# TODO: re-enable musl once we have refactored to pre-built containers
|
|
# Right now we have to build node from source which is too expensive.
|
|
# - musl
|
|
arch:
|
|
- x86_64
|
|
# - aarch64
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Set up QEMU
|
|
if: ${{ matrix.arch == 'aarch64' }}
|
|
uses: docker/setup-qemu-action@v2
|
|
with:
|
|
platforms: arm64
|
|
- name: Setup tmate session
|
|
uses: mxschmitt/action-tmate@v3
|
|
- name: Build Linux GNU native node modules
|
|
if: ${{ matrix.libc == 'gnu' }}
|
|
run: |
|
|
docker run \
|
|
-v $(pwd):/io -w /io \
|
|
quay.io/pypa/manylinux2014_${{ matrix.arch }} \
|
|
bash ci/build_linux_artifacts.sh ${{ matrix.arch }}-unknown-linux-gnu
|
|
- name: Build musl Linux native node modules
|
|
if: ${{ matrix.libc == 'musl' }}
|
|
run: |
|
|
docker run --platform linux/arm64/v8 \
|
|
-v $(pwd):/io -w /io \
|
|
quay.io/pypa/musllinux_1_1_${{ matrix.arch }} \
|
|
bash ci/build_linux_artifacts.sh ${{ matrix.arch }}-unknown-linux-musl
|
|
# - uses: softprops/action-gh-release@v1
|
|
# with:
|
|
# draft: true
|
|
# files: node/dist/vectordb-linux*.tgz
|
|
# fail_on_unmatched_files: true |