This is an automated email from the ASF dual-hosted git repository.

SiyaoIsHiding pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-nodejs-driver.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 71fac53b CASSNODEJS-12: Deno and Bun support patch by Jane He; 
reviewed by Jorge Bay
71fac53b is described below

commit 71fac53b5c957f4e0ffbdc02859f778f9e1d029e
Author: Jane He <[email protected]>
AuthorDate: Mon Jun 15 22:32:41 2026 -0700

    CASSNODEJS-12: Deno and Bun support
    patch by Jane He; reviewed by Jorge Bay
---
 .github/actions/setup-bun/action.yml       |  14 +++
 .github/actions/setup-ccm/action.yml       | 136 +++++++++++++++++++++++++++++
 .github/actions/setup-deno/action.yml      |  14 +++
 .github/workflows/integration-bun-deno.yml | 126 ++------------------------
 .github/workflows/test.yml                 | 126 ++------------------------
 5 files changed, 174 insertions(+), 242 deletions(-)

diff --git a/.github/actions/setup-bun/action.yml 
b/.github/actions/setup-bun/action.yml
new file mode 100644
index 00000000..80726a6d
--- /dev/null
+++ b/.github/actions/setup-bun/action.yml
@@ -0,0 +1,14 @@
+name: Set up Bun
+description: Install Bun from the official install script
+
+runs:
+  using: composite
+  steps:
+    - name: Install Bun
+      shell: bash
+      run: |
+        export BUN_INSTALL="$HOME/.bun"
+        curl -fsSL https://bun.com/install | bash
+        echo "BUN_INSTALL=$BUN_INSTALL" >> "$GITHUB_ENV"
+        echo "$BUN_INSTALL/bin" >> "$GITHUB_PATH"
+        "$BUN_INSTALL/bin/bun" --version
diff --git a/.github/actions/setup-ccm/action.yml 
b/.github/actions/setup-ccm/action.yml
new file mode 100644
index 00000000..dde05d8c
--- /dev/null
+++ b/.github/actions/setup-ccm/action.yml
@@ -0,0 +1,136 @@
+name: Set up CCM for integration tests
+description: >
+  Install ccm and its Python toolchain, the Zulu JDKs Cassandra needs,
+  SSL certificates, Simulacron, and pre-download the Cassandra distribution.
+
+inputs:
+  server-version:
+    description: 'Cassandra minor version (e.g. "4.1"); resolved to the latest 
patch release.'
+    required: true
+
+runs:
+  using: composite
+  steps:
+    # ---- Python for ccm ----
+    - name: Set up Python 3.9.16
+      uses: actions/setup-python@v5
+      with:
+        python-version: "3.9.16"
+
+    - name: Install ccm
+      shell: bash
+      run: |
+        python -m pip install --upgrade pip
+        git clone --depth 1 --single-branch -b cassandra-test 
https://github.com/apache/cassandra-ccm.git
+        cd cassandra-ccm
+        pip install -r requirements.txt
+        ./setup.py install
+
+    # ---- Install required Zulu JDKs (8/11/17) and capture their homes ----
+    - name: Install Zulu 11
+      id: z11
+      uses: actions/setup-java@v5
+      with:
+        distribution: zulu
+        java-version: "11"
+
+    - name: Install Zulu 17
+      id: z17
+      uses: actions/setup-java@v5
+      with:
+        distribution: zulu
+        java-version: "17"
+
+    - name: Install Zulu 8
+      id: z8
+      uses: actions/setup-java@v5
+      with:
+        distribution: zulu
+        java-version: "8"
+
+    - name: Export JAVA*_HOME variables
+      shell: bash
+      run: |
+        echo "JAVA8_HOME=${{ steps.z8.outputs.path }}"  >> "$GITHUB_ENV"
+        echo "JAVA11_HOME=${{ steps.z11.outputs.path }}" >> "$GITHUB_ENV"
+        echo "JAVA17_HOME=${{ steps.z17.outputs.path }}" >> "$GITHUB_ENV"
+        echo "JAVA_HOME=${{ steps.z8.outputs.path }}"    >> "$GITHUB_ENV"
+        echo "CCM_UPDATE_PID_DEFAULT_TIMEOUT=120"        >> "$GITHUB_ENV"
+
+    - name: Generate SSL certificates
+      shell: bash
+      run: |
+        mkdir -p /home/runner/workspace/tools/ccm/ssl/
+        cd /home/runner/workspace/tools/ccm/ssl/
+        keytool -genkey \
+          -keyalg RSA \
+          -alias cassandra \
+          -keystore keystore.jks \
+          -storepass cassandra \
+          -keypass cassandra \
+          -validity 364635 \
+          -dname "CN=Jane He, OU=TE, O=ASF, L=Santa Clara, ST=CA, C=TE"
+        keytool -export \
+          -alias cassandra \
+          -file cassandra.crt \
+          -keystore keystore.jks \
+          -storepass cassandra
+        openssl x509 \
+          -inform der \
+          -in cassandra.crt \
+          -out cassandra.pem
+        keytool -genkeypair \
+          -keyalg RSA \
+          -alias client \
+          -keystore truststore.jks \
+          -storepass cassandra \
+          -keypass cassandra \
+          -validity 364635 \
+          -dname "CN=Philip Thompson, OU=TE, O=DataStax, L=Santa Clara, ST=CA, 
C=TE"
+        keytool -importkeystore \
+          -srckeystore truststore.jks \
+          -destkeystore client.p12 \
+          -srcstorepass cassandra \
+          -deststorepass cassandra \
+          -deststoretype PKCS12
+        openssl pkcs12 \
+          -in client.p12 \
+          -passin pass:cassandra \
+          -nokeys \
+          -out client_cert.pem -legacy
+        openssl pkcs12 \
+          -in client.p12 \
+          -passin pass:cassandra \
+          -nodes \
+          -nocerts \
+          -out client_key.pem -legacy
+
+    - name: Install Simulacron
+      shell: bash
+      run: |
+        wget 
https://github.com/datastax/simulacron/releases/download/0.12.0/simulacron-standalone-0.12.0.jar
 -O /home/runner/simulacron.jar
+
+    - name: Resolve Cassandra latest patch version
+      shell: bash
+      env:
+        SERVER_VERSION: ${{ inputs.server-version }}
+      run: |
+        PATCH_SERVER_VERSION=$(
+          curl -s https://downloads.apache.org/cassandra/ \
+          | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=)' \
+          | sort -rV \
+          | uniq -w 3 \
+          | grep "^${SERVER_VERSION}\."
+        )
+        echo "Resolved Cassandra ${SERVER_VERSION}.x -> 
${PATCH_SERVER_VERSION}"
+        echo "CCM_VERSION=$PATCH_SERVER_VERSION" >> "$GITHUB_ENV"
+
+    - name: Print environment
+      shell: bash
+      run: printenv | sort
+
+    - name: Pre-download Cassandra distribution
+      shell: bash
+      run: |
+        ccm create predownload -v $CCM_VERSION
+        ccm remove
diff --git a/.github/actions/setup-deno/action.yml 
b/.github/actions/setup-deno/action.yml
new file mode 100644
index 00000000..2f3cd959
--- /dev/null
+++ b/.github/actions/setup-deno/action.yml
@@ -0,0 +1,14 @@
+name: Set up Deno
+description: Install Deno from the official install script (no third-party 
actions)
+
+runs:
+  using: composite
+  steps:
+    - name: Install Deno
+      shell: bash
+      run: |
+        export DENO_INSTALL="$HOME/.deno"
+        curl -fsSL https://deno.land/install.sh | sh
+        echo "DENO_INSTALL=$DENO_INSTALL" >> "$GITHUB_ENV"
+        echo "$DENO_INSTALL/bin" >> "$GITHUB_PATH"
+        "$DENO_INSTALL/bin/deno" --version
diff --git a/.github/workflows/integration-bun-deno.yml 
b/.github/workflows/integration-bun-deno.yml
index b5be8cc1..7025e32b 100644
--- a/.github/workflows/integration-bun-deno.yml
+++ b/.github/workflows/integration-bun-deno.yml
@@ -24,135 +24,19 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
 
-      # ---- Python for ccm ----
-      - name: Set up Python 3.9.16
-        uses: actions/setup-python@v5
+      - name: Set up CCM
+        uses: ./.github/actions/setup-ccm
         with:
-          python-version: "3.9.16"
-
-      - name: Install ccm
-        run: |
-          python -m pip install --upgrade pip
-          git clone --depth 1 --single-branch -b cassandra-test 
https://github.com/apache/cassandra-ccm.git
-          cd cassandra-ccm
-          pip install -r requirements.txt
-          ./setup.py install
-
-      # ---- Install required Zulu JDKs (8/11/17) and capture their homes ----
-      - name: Install Zulu 11
-        id: z11
-        uses: actions/setup-java@v5
-        with:
-          distribution: zulu
-          java-version: "11"
-
-      - name: Install Zulu 17
-        id: z17
-        uses: actions/setup-java@v5
-        with:
-          distribution: zulu
-          java-version: "17"
-
-      - name: Install Zulu 8
-        id: z8
-        uses: actions/setup-java@v5
-        with:
-          distribution: zulu
-          java-version: "8"
-
-      - name: Export JAVA*_HOME variables
-        run: |
-          echo "JAVA8_HOME=${{ steps.z8.outputs.path }}"  >> "$GITHUB_ENV"
-          echo "JAVA11_HOME=${{ steps.z11.outputs.path }}" >> "$GITHUB_ENV"
-          echo "JAVA17_HOME=${{ steps.z17.outputs.path }}" >> "$GITHUB_ENV"
-          echo "JAVA_HOME=${{ steps.z8.outputs.path }}"    >> "$GITHUB_ENV"
-          echo "CCM_UPDATE_PID_DEFAULT_TIMEOUT=120"        >> "$GITHUB_ENV"
-
-      - name: Generate SSL certificates
-        run: |
-          mkdir -p /home/runner/workspace/tools/ccm/ssl/
-          cd /home/runner/workspace/tools/ccm/ssl/
-          keytool -genkey \
-            -keyalg RSA \
-            -alias cassandra \
-            -keystore keystore.jks \
-            -storepass cassandra \
-            -keypass cassandra \
-            -validity 364635 \
-            -dname "CN=Jane He, OU=TE, O=ASF, L=Santa Clara, ST=CA, C=TE"
-          keytool -export \
-            -alias cassandra \
-            -file cassandra.crt \
-            -keystore keystore.jks \
-            -storepass cassandra
-          openssl x509 \
-            -inform der \
-            -in cassandra.crt \
-            -out cassandra.pem
-          keytool -genkeypair \
-            -keyalg RSA \
-            -alias client \
-            -keystore truststore.jks \
-            -storepass cassandra \
-            -keypass cassandra \
-            -validity 364635 \
-            -dname "CN=Philip Thompson, OU=TE, O=DataStax, L=Santa Clara, 
ST=CA, C=TE"
-          keytool -importkeystore \
-            -srckeystore truststore.jks \
-            -destkeystore client.p12 \
-            -srcstorepass cassandra \
-            -deststorepass cassandra \
-            -deststoretype PKCS12
-          openssl pkcs12 \
-            -in client.p12 \
-            -passin pass:cassandra \
-            -nokeys \
-            -out client_cert.pem -legacy
-          openssl pkcs12 \
-            -in client.p12 \
-            -passin pass:cassandra \
-            -nodes \
-            -nocerts \
-            -out client_key.pem -legacy
-
-      - name: Install Simulacron
-        run: |
-          wget 
https://github.com/datastax/simulacron/releases/download/0.12.0/simulacron-standalone-0.12.0.jar
 -O /home/runner/simulacron.jar
+          server-version: ${{ matrix.SERVER_VERSION }}
 
       # ---- Set up the runtime under test ----
       - name: Set up Bun
         if: matrix.RUNTIME == 'bun'
-        uses: oven-sh/setup-bun@v2
-        with:
-          bun-version: latest
+        uses: ./.github/actions/setup-bun
 
       - name: Set up Deno
         if: matrix.RUNTIME == 'deno'
-        uses: denoland/setup-deno@v2
-        with:
-          deno-version: latest
-
-      - name: Resolve Cassandra latest patch version
-        env:
-          SERVER_VERSION: ${{ matrix.SERVER_VERSION }}
-        run: |
-          PATCH_SERVER_VERSION=$(
-            curl -s https://downloads.apache.org/cassandra/ \
-            | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=)' \
-            | sort -rV \
-            | uniq -w 3 \
-            | grep "^${SERVER_VERSION}\."
-          )
-          echo "Resolved Cassandra ${SERVER_VERSION}.x -> 
${PATCH_SERVER_VERSION}"
-          echo "CCM_VERSION=$PATCH_SERVER_VERSION" >> "$GITHUB_ENV"
-
-      - name: Print environment
-        run: printenv | sort
-
-      - name: Pre-download Cassandra distribution
-        run: |
-          ccm create predownload -v $CCM_VERSION
-          ccm remove
+        uses: ./.github/actions/setup-deno
 
       - name: Run integration tests (${{ matrix.RUNTIME }})
         run: |
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 1decd2c4..930ed1dd 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -51,9 +51,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
-      - uses: oven-sh/setup-bun@v2
-        with:
-          bun-version: latest
+      - uses: ./.github/actions/setup-bun
       - run: bun install
       - run: bunx mocha test/unit --recursive -R spec -t 5000
 
@@ -62,9 +60,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
-      - uses: denoland/setup-deno@v2
-        with:
-          deno-version: latest
+      - uses: ./.github/actions/setup-deno
       # --allow-scripts runs lifecycle scripts so the kerberos prebuild is 
fetched.
       - run: deno install --allow-scripts=npm:kerberos
       - run: deno run -A --unstable-detect-cjs npm:[email protected] test/unit 
--recursive -R spec -t 5000
@@ -81,100 +77,10 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
 
-      # ---- Python for ccm ----
-      - name: Set up Python 3.9.16
-        uses: actions/setup-python@v5
-        with:
-          python-version: "3.9.16"
-
-      - name: Install ccm
-        run: |
-          python -m pip install --upgrade pip
-          git clone --depth 1 --single-branch -b cassandra-test 
https://github.com/apache/cassandra-ccm.git
-          cd cassandra-ccm
-          pip install -r requirements.txt
-          ./setup.py install
-
-      # ---- Install required Zulu JDKs (8/11/17) and capture their homes ----
-      - name: Install Zulu 11
-        id: z11
-        uses: actions/setup-java@v5
-        with:
-          distribution: zulu
-          java-version: "11"
-
-      - name: Install Zulu 17
-        id: z17
-        uses: actions/setup-java@v5
-        with:
-          distribution: zulu
-          java-version: "17"
-
-      - name: Install Zulu 8
-        id: z8
-        uses: actions/setup-java@v5
+      - name: Set up CCM
+        uses: ./.github/actions/setup-ccm
         with:
-          distribution: zulu
-          java-version: "8"
-
-      - name: Export JAVA*_HOME variables
-        run: |
-          echo "JAVA8_HOME=${{ steps.z8.outputs.path }}"  >> "$GITHUB_ENV"
-          echo "JAVA11_HOME=${{ steps.z11.outputs.path }}" >> "$GITHUB_ENV"
-          echo "JAVA17_HOME=${{ steps.z17.outputs.path }}" >> "$GITHUB_ENV"
-          echo "JAVA_HOME=${{ steps.z8.outputs.path }}"    >> "$GITHUB_ENV"
-          echo "CCM_UPDATE_PID_DEFAULT_TIMEOUT=120"        >> "$GITHUB_ENV"
-
-      - name: Generate SSL certificates
-        run: |
-          mkdir -p /home/runner/workspace/tools/ccm/ssl/
-          cd /home/runner/workspace/tools/ccm/ssl/
-          keytool -genkey \
-            -keyalg RSA \
-            -alias cassandra \
-            -keystore keystore.jks \
-            -storepass cassandra \
-            -keypass cassandra \
-            -validity 364635 \
-            -dname "CN=Jane He, OU=TE, O=ASF, L=Santa Clara, ST=CA, C=TE"
-          keytool -export \
-            -alias cassandra \
-            -file cassandra.crt \
-            -keystore keystore.jks \
-            -storepass cassandra
-          openssl x509 \
-            -inform der \
-            -in cassandra.crt \
-            -out cassandra.pem
-          keytool -genkeypair \
-            -keyalg RSA \
-            -alias client \
-            -keystore truststore.jks \
-            -storepass cassandra \
-            -keypass cassandra \
-            -validity 364635 \
-            -dname "CN=Philip Thompson, OU=TE, O=DataStax, L=Santa Clara, 
ST=CA, C=TE"
-          keytool -importkeystore \
-            -srckeystore truststore.jks \
-            -destkeystore client.p12 \
-            -srcstorepass cassandra \
-            -deststorepass cassandra \
-            -deststoretype PKCS12
-          openssl pkcs12 \
-            -in client.p12 \
-            -passin pass:cassandra \
-            -nokeys \
-            -out client_cert.pem -legacy
-          openssl pkcs12 \
-            -in client.p12 \
-            -passin pass:cassandra \
-            -nodes \
-            -nocerts \
-            -out client_key.pem -legacy
-
-      - name: Install Simulacron
-        run: |
-          wget 
https://github.com/datastax/simulacron/releases/download/0.12.0/simulacron-standalone-0.12.0.jar
 -O /home/runner/simulacron.jar
+          server-version: ${{ matrix.SERVER_VERSION }}
 
       - name: Set up Node.js
         uses: actions/setup-node@v4
@@ -182,28 +88,6 @@ jobs:
           node-version: ${{ matrix.NODE_VERSION }}
           cache: "npm"
 
-      - name: Resolve Cassandra latest patch version
-        env:
-          SERVER_VERSION: ${{ matrix.SERVER_VERSION }}
-        run: |
-          PATCH_SERVER_VERSION=$(
-            curl -s https://downloads.apache.org/cassandra/ \
-            | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=)' \
-            | sort -rV \
-            | uniq -w 3 \
-            | grep "^${SERVER_VERSION}\."
-          )
-          echo "Resolved Cassandra ${SERVER_VERSION}.x -> 
${PATCH_SERVER_VERSION}"
-          echo "CCM_VERSION=$PATCH_SERVER_VERSION" >> "$GITHUB_ENV"
-
-      - name: Print environment
-        run: printenv | sort
-
-      - name: Pre-download Cassandra distribution
-        run: |
-          ccm create predownload -v $CCM_VERSION
-          ccm remove
-
       - name: Run tests
         run: |
           npm ci


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to