mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-08 12:52:58 +00:00
206 lines
5.8 KiB
YAML
206 lines
5.8 KiB
YAML
name: Prepare Release
|
|
|
|
# Based on https://github.com/dherman/neon-prebuild-example/blob/eaa4d33d682e5eb7abbc3da7aed153a1b1acb1b3/.github/workflows/publish.yml
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
|
|
jobs:
|
|
draft-release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
prerelease: true # hardcoded on for now
|
|
generate_release_notes: true
|
|
|
|
rust:
|
|
runs-on: ubuntu-latest
|
|
needs: draft-release
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: rust/vectordb
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
lfs: true
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y protobuf-compiler libssl-dev
|
|
- name: Package Rust
|
|
run: cargo package --all-features
|
|
- uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: target/vectordb-*.crate
|
|
|
|
python:
|
|
runs-on: ubuntu-latest
|
|
needs: draft-release
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
lfs: true
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10"
|
|
- name: Build wheel
|
|
run: |
|
|
pip install wheel
|
|
python setup.py sdist bdist_wheel
|
|
- uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: |
|
|
python/dist/lancedb-*.tar.gz
|
|
python/dist/lancedb-*.whl
|
|
|
|
node:
|
|
runs-on: ubuntu-latest
|
|
needs: draft-release
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: node
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 20
|
|
cache: 'npm'
|
|
cache-dependency-path: node/package-lock.json
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y protobuf-compiler libssl-dev
|
|
- name: Build
|
|
run: |
|
|
npm ci
|
|
npm run tsc
|
|
npm pack
|
|
- uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: node/vectordb-*.tgz
|
|
|
|
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: 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
|
|
|
|
node-linux:
|
|
name: Linux ${{ matrix.settings.arch}} native node module
|
|
runs-on: ubuntu-latest
|
|
needs: draft-release
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
libc:
|
|
- gnu
|
|
- musl
|
|
settings:
|
|
- container: quay.io/pypa/manylinux2014_x86_64
|
|
arch: x86_64
|
|
protoc_arch: x86_64
|
|
# TODO: find a way to build aarch64 on GA
|
|
# - container: quay.io/pypa/manylinux2014_aarch64
|
|
# arch: aarch64
|
|
# protoc_arch: aarch_64
|
|
container:
|
|
image: ${{ matrix.settings.container }}
|
|
options: --platform linux/amd64
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: node
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install system dependencies
|
|
run: |
|
|
yum install -y openssl-devel unzip
|
|
# Install new enough protobuf (yum-provided is old)
|
|
PB_REL=https://github.com/protocolbuffers/protobuf/releases
|
|
PB_VERSION=23.1
|
|
curl -LO $PB_REL/download/v$PB_VERSION/protoc-$PB_VERSION-linux-${{ matrix.settings.protoc_arch }}.zip
|
|
unzip protoc-$PB_VERSION-linux-${{ matrix.settings.protoc_arch }}.zip -d /usr/local
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 17 # Last that support glibc 2.17
|
|
- name: Setup Rust
|
|
run: |
|
|
curl https://sh.rustup.rs -sSf | bash -s -- -y
|
|
echo "/root/.cargo/bin" >> $GITHUB_PATH
|
|
- name: Install npm dependencies
|
|
run: npm ci
|
|
- name: Build ${{ matrix.settings.libc }} library
|
|
run: |
|
|
BUILD_TARGET=${{ matrix.settings.arch }}-unknown-linux-${{ matrix.settings.libc }}
|
|
rustup target add $BUILD_TARGET
|
|
export RUSTFLAGS="-C target-feature=-crt-static" # for musl
|
|
npm run build-release -- --target $BUILD_TARGET
|
|
npm run pack-build -- --target $BUILD_TARGET
|
|
- uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: node/dist/vectordb-linux*.tgz
|
|
|
|
release:
|
|
needs: [python, node, node-macos, node-linux, rust]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/download-artifact@v3
|
|
- name: Publish to PyPI
|
|
env:
|
|
TWINE_USERNAME: __token__
|
|
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
run: |
|
|
python -m twine upload --non-interactive \
|
|
--skip-existing \
|
|
--repository testpypi python/dist/*
|
|
- name: Publish to NPM
|
|
run: |
|
|
for filename in node/dist/*.tgz; do
|
|
npm publish --dry-run $filename
|
|
done
|
|
- name: Publish to crates.io
|
|
env:
|
|
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
run: |
|
|
cargo publish --dry-run --no-verify rust/target/vectordb-*.crate
|
|
# - uses: softprops/action-gh-release@v1
|
|
# with:
|
|
# draft: false
|