Skip to content

feat(javascript): add npm publishing workflow and release scripts#4076

Open
kentkwu wants to merge 6 commits intoapache:mainfrom
kentkwu:gh-4051
Open

feat(javascript): add npm publishing workflow and release scripts#4076
kentkwu wants to merge 6 commits intoapache:mainfrom
kentkwu:gh-4051

Conversation

@kentkwu
Copy link
Contributor

@kentkwu kentkwu commented Mar 11, 2026

This PR implements the npm publishing and release scripts for the Node.js Driver Manager.

  • ci/scripts/node_npm_upload.sh — publishes platform + main packages to an npm registry
  • packaging.yml — upload-npm job publishes to npm with --tag next on schedule or manual dispatch
  • dev/release/post-09-npm.sh — release manager script to publish official releases
  • dev/release/02-sign.sh — GPG signing for npm tarballs
  • dev/release/utils-prepare.sh — JavaScript version bumping added to release preparation
  • Package renamed to apache-arrow/adbc-driver-manager with proper versioning (0.23.0)

Test Plan

Tested packaging and npm publishing against a local proxy registry from my fork

# Start a local Verdaccio registry
docker run -d --name verdaccio-adbc-test -p 4873:4873 verdaccio/verdaccio
sleep 3

# Create a test user and capture the auth token
TOKEN=$(curl -s -X PUT http://localhost:4873/-/user/org.couchdb.user:testuser \
  -H "Content-Type: application/json" \
  -d '{"name":"testuser","password":"testpass","type":"user"}' \
  | jq -r '.token')

# Download CI-built packages from a workflow run
gh run download 22973831085 --repo kentkwu/arrow-adbc --name node-packages --dir /tmp/node-packages

# Publish to local registry
NPM_TOKEN="${TOKEN}" \
NPM_REGISTRY=http://localhost:4873 \
  ./ci/scripts/node_npm_upload.sh /tmp/node-packages/

# Verify - note: needs at symbol before apache-arrow
npm view apache-arrow/adbc-driver-manager optionalDependencies --registry http://localhost:4873

# Clean up
docker rm -f verdaccio-adbc-test
Screenshot 2026-03-11 at 5 02 26 PM

Tested utils-prepare.sh increments version

SOURCE_DIR=./dev/release
source "$SOURCE_DIR/utils-common.sh"
source "$SOURCE_DIR/utils-prepare.sh"
VERSION_JS="0.99.0"
update_versions "release"

Verified the following files updated to 0.99.0:

  • javascript/package.json — main version and all optionalDependencies
  • javascript/npm/*/package.json — all 5 platform packages
  • javascript/Cargo.toml

Closes #4051

@lidavidm
Copy link
Member

@kentkwu is the CI supposed to be failing?

As for nightlies: is there a thirdparty registry we can publish those to instead then? e.g. for Python, we don't publish to PyPI; nightlies go to Gemfury. It seems Gemfury also supports NPM packages, so that might be a compromise: we can upload nightlies, but users need to configure the third party repository

@kentkwu
Copy link
Contributor Author

kentkwu commented Mar 13, 2026

@kentkwu is the CI supposed to be failing?

As for nightlies: is there a thirdparty registry we can publish those to instead then? e.g. for Python, we don't publish to PyPI; nightlies go to Gemfury. It seems Gemfury also supports NPM packages, so that might be a compromise: we can upload nightlies, but users need to configure the third party repository

Oh yes pushing the nightlies to gemfury makes sense. I will make this update.

On the CI failure - that appears to be due to _static and _shared sqlite both being built to adbc_driver_sqlite.pdb and conflicting. I just reran on my fork and it passed so it's possibly flaky. I can look into that separately

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

javascript: set up npm publishing for node.js ADBC Driver Manager

3 participants