Skip to content

ninja-fix: Changelog and version bump for 4.9.0 #8

ninja-fix: Changelog and version bump for 4.9.0

ninja-fix: Changelog and version bump for 4.9.0 #8

Workflow file for this run

name: Unit and Integration Tests for Apache Cassandra NodeJS Driver
on:
push:
pull_request:
workflow_dispatch: # allow manual trigger from Actions page
permissions:
contents: read
actions: read
checks: write
jobs:
eslint:
name: Run eslint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- run: npm install -g eslint@4
- run: npm run eslint
typescript:
name: TypeScript generation and compilation tests
runs-on: ubuntu-latest
strategy:
matrix:
NODE_VERSION: ["20", "22", "24"]
TSC_VERSION: ["4.9", "5.9", "6.0"]
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.NODE_VERSION }}
cache: "npm"
- run: npm ci
- run: npm install typescript@${{ matrix.TSC_VERSION }} --no-save
- run: |
pushd test/unit/typescript/
npx tsc
node -e "require('./api-generation-test').generate()" > generated.ts
npx tsc --noEmit
unit-integration-tests:
runs-on: ubuntu-latest
strategy:
matrix:
NODE_VERSION: ["20", "22", "24"]
SERVER_VERSION: ["3.11", "4.0", "4.1", "5.0"] # Cassandra minor versions
fail-fast: false
steps:
- 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
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"
- 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
- name: Set up Node.js
uses: actions/setup-node@v4
with:
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: Run tests
run: |
npm ci
npm install --no-save mocha-multi-reporters mocha-junit-reporter
echo '{
"reporterEnabled": "spec, mocha-junit-reporter",
"mochaJunitReporterReporterOptions": {
"mochaFile": "test-results/results.xml"
}
}' > config.json
npx mocha test/unit test/integration/short --recursive --exit --reporter mocha-multi-reporters \
--reporter-options configFile=config.json
- name: Upload Test Results
if: (!cancelled())
uses: actions/upload-artifact@v4
with:
name: Test Results (Node.js ${{ matrix.NODE_VERSION }}, Cassandra ${{ matrix.SERVER_VERSION }})
path: test-results/**/*
publish-test-results:
name: "Publish Tests Results"
needs: unit-integration-tests
runs-on: ubuntu-latest
permissions:
checks: write
pull-requests: write
if: (!cancelled())
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: artifacts/**/*.xml