Copilot commented on code in PR #466: URL: https://github.com/apache/cassandra-nodejs-driver/pull/466#discussion_r3416516129
########## .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 Review Comment: The `curl | bash` pipeline can mask download failures and makes it harder to diagnose transient network issues. Download the installer script first (and enable `set -euo pipefail`) so failures are reported reliably. ########## .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 Review Comment: The `curl | sh` pipeline can hide curl failures and is harder to debug. Download the installer script first (and enable `set -euo pipefail`) so the step fails reliably with a clearer error if the download or install fails. ########## .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" Review Comment: The version resolution logic relies on `uniq -w 3`, which will break for minor versions that share the same first 3 characters (e.g. `3.10` vs `3.11`) and can also yield an empty/invalid CCM_VERSION without a clear failure. Filter by the requested minor version first and select a single latest patch (with an explicit empty-check). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
