Skip to content

ci: add Scylla test.py driver subset - #943

Draft
dkropachev wants to merge 3 commits into
scylladb:masterfrom
dkropachev:dk/scylla-latest-testpy-driver-compat
Draft

ci: add Scylla test.py driver subset#943
dkropachev wants to merge 3 commits into
scylladb:masterfrom
dkropachev:dk/scylla-latest-testpy-driver-compat

Conversation

@dkropachev

@dkropachev dkropachev commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a CI workflow that resolves the latest stable Scylla release with get-version, checks out the matching scylladb/scylladb tag, and runs a narrow Scylla test.py driver subset
  • use ccm create --scylla --version release:<version> to pull the Scylla release binary, then run Scylla's pytest runner with --exe-path
  • add a 29-test manifest for non-standard Python driver usage: control-connection events, service-level driver classification, prepared/result metadata IDs, custom payloads, routing-key metadata, startup options, and serializer edge cases
  • harden external tooling setup by using read-only workflow permissions, disabling persisted checkout credentials, pinning ccm, and verifying downloaded tool checksums

Driver Surface

CQL native protocol startup options, control-connection behavior, prepared/result metadata IDs, custom payloads, prepared routing-key indexes, and selected serializer binding behavior.

Compatibility Risks

This is CI-only and does not change runtime driver behavior. The workflow tracks the latest stable Scylla release and fails if DockerHub and GitHub tag resolution disagree. It uses Scylla's pytest runner plugin directly because the top-level test.py wrapper probes configured build modes before --exe-path can switch to custom_exe, which does not work for a source checkout plus a ccm-downloaded binary. The helper creates a temporary build.ninja marker so release-tag custom_exe path resolution succeeds before --exe-path replaces the binary.

Required Integration Scenario

Run the new Scylla test.py driver compatibility workflow on Ubuntu 24.04 against the latest stable Scylla release pulled by ccm.

Testing

  • bash -n scripts/run_scylla_driver_testpy.sh
  • parsed .github/workflows/scylla-driver-testpy.yml with PyYAML
  • SCYLLA_VERSION=release:2026.2.2 scripts/run_scylla_driver_testpy.sh --resolve-scylla-version
  • SCYLLA_TESTPY_DRY_RUN=1 SCYLLA_SOURCE_DIR=/extra/scylladb/scylladb SCYLLA_VERSION=2026.2.2 scripts/run_scylla_driver_testpy.sh
  • SCYLLA_SOURCE_DIR=/tmp/scylla-2026.2.2-source SCYLLA_VERSION=2026.2.2 SCYLLA_TESTPY_TMPDIR=/tmp/scylla-driver-testpy-release-exact SCYLLA_TESTPY_JOBS=1 scripts/run_scylla_driver_testpy.sh passed: 29 passed, 7 warnings
  • PR CI passed for commit 8ec3ee48c9946b6d2ebf139693ab30841ab3628c

Copilot AI review requested due to automatic review settings July 27, 2026 16:46
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a GitHub Actions pipeline for Scylla Python driver compatibility testing. The workflow installs required tools and dependencies, resolves and checks out a matching Scylla release, caches CCM data, and invokes a new Bash runner. The runner validates selected tests, locates or downloads the Scylla executable, supports dry-run and collection modes, builds pytest arguments, and executes the curated compatibility test list.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant get-version
  participant ScyllaCheckout
  participant CCM
  participant PytestRunner
  GitHubActions->>get-version: resolve matching stable release
  GitHubActions->>ScyllaCheckout: checkout Scylla revision
  GitHubActions->>CCM: install or restore Scylla binary
  GitHubActions->>PytestRunner: run selected compatibility tests
Loading

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly matches the main change: adding a CI workflow for a Scylla test.py driver subset.
Description check ✅ Passed The description covers the main template content well, including summary, risks, scenario, and testing details.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds CI coverage for Python driver compatibility against the latest stable Scylla release.

Changes:

  • Adds an Ubuntu 24.04 compatibility workflow.
  • Downloads Scylla through CCM and invokes its pytest runner.
  • Defines a focused 32-test compatibility manifest.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/scylla-driver-testpy.yml Configures the compatibility CI job.
scripts/run_scylla_driver_testpy.sh Resolves Scylla and runs selected tests.
scripts/scylla-driver-testpy-tests.txt Lists the 32 compatibility tests.
Comments suppressed due to low confidence (1)

.github/workflows/scylla-driver-testpy.yml:85

  • The downloaded get-version executable is run without verifying its contents. Pinning the release number does not authenticate a mutable GitHub release asset; verify a trusted SHA-256 digest (or use a commit-SHA-pinned action) before making the binary executable.
          curl -fsSLo "$RUNNER_TEMP/get-version.zip" \
            "https://github.com/scylladb-actions/get-version/releases/download/v${GET_VERSION_VERSION}/get-version_${GET_VERSION_VERSION}_linux_amd64v3.zip"
          unzip -q -o "$RUNNER_TEMP/get-version.zip" -d "$RUNNER_TEMP/bin"
          chmod +x "$RUNNER_TEMP/bin/get-version"

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +67 to +70
curl -fsSLo "$RUNNER_TEMP/bin/minio" https://dl.min.io/server/minio/release/linux-amd64/minio
curl -fsSLo "$RUNNER_TEMP/bin/mc" https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x "$RUNNER_TEMP/bin/minio" "$RUNNER_TEMP/bin/mc"
curl -fsSL "https://github.com/Shopify/toxiproxy/releases/download/v${TOXIPROXY_VERSION}/toxiproxy_${TOXIPROXY_VERSION}_linux_amd64.tar.gz" \
- name: Install ccm and Scylla test.py Python dependencies
run: |
uv pip install \
"ccm @ git+https://github.com/scylladb/scylla-ccm.git@master" \

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
.github/workflows/scylla-driver-testpy.yml (2)

127-147: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

ccm is installed from an unpinned master branch.

ccm @ git+https://github.com/scylladb/scylla-ccm.git@master tracks a moving branch rather than a tag/commit, so CI behavior can change without any change in this repo, and results are not reproducible across runs.

♻️ Proposed fix
-            "ccm @ git+https://github.com/scylladb/scylla-ccm.git@master" \
+            "ccm @ git+https://github.com/scylladb/scylla-ccm.git@<pinned-commit-or-tag>" \
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/scylla-driver-testpy.yml around lines 127 - 147, Pin the
ccm dependency in the “Install ccm and Scylla test.py Python dependencies” step
to a specific immutable commit or release tag instead of the moving master
branch, preserving the existing uv pip install flow and all other dependencies.

40-41: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Set persist-credentials: false on checkouts.

Neither checkout step disables credential persistence, so the GITHUB_TOKEN remains in the local git config for the rest of the job. Given later steps install an unpinned git dependency (ccm@master) and run third-party pytest code against it, an unpinned/compromised dependency could exfiltrate the token. Since this workflow never pushes back to either repo, disable persistence on both checkouts.

🔒 Proposed fix
       - name: Checkout driver
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+        with:
+          persist-credentials: false
       - name: Checkout matching Scylla test.py
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
         with:
           repository: scylladb/scylladb
           ref: scylla-${{ steps.scylla-release.outputs.version }}
           path: scylladb
           fetch-depth: 1
+          persist-credentials: false

Also applies to: 105-111

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/scylla-driver-testpy.yml around lines 40 - 41, Update both
checkout steps in the workflow to set persist-credentials to false, including
the driver checkout and the other checkout identified by the comment. Keep the
existing checkout actions and pinned revisions unchanged.

Source: Linters/SAST tools

scripts/run_scylla_driver_testpy.sh (1)

4-4: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Filter string duplicated with the workflow.

stable_release_filter mirrors the identical string in .github/workflows/scylla-driver-testpy.yml (stable_filter). Since the workflow always sets SCYLLA_VERSION, this copy is a standalone-invocation fallback only, but the two definitions can silently drift if one is edited without the other.

Also applies to: 23-52

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/run_scylla_driver_testpy.sh` at line 4, Remove the duplicated stable
release filter definition from scripts/run_scylla_driver_testpy.sh and rely on
the workflow-provided SCYLLA_VERSION when invoked through
.github/workflows/scylla-driver-testpy.yml; if standalone fallback behavior must
remain, centralize or reuse a single shared definition so it cannot drift from
the workflow’s stable_filter.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/scylla-driver-testpy.yml:
- Around line 88-103: Update both get-version invocations in the “Resolve latest
stable Scylla release” step to use the documented --filters option spelling,
preserving the existing stable_filter value and all other arguments.

In `@scripts/run_scylla_driver_testpy.sh`:
- Around line 156-166: Update the fallback `find_scylla_executable` call in the
executable discovery flow to run in a conditional or otherwise suppress `set -e`
termination when it fails. Preserve the subsequent `scylla_exe` validation so
failures reach the existing descriptive error message and return path.

---

Nitpick comments:
In @.github/workflows/scylla-driver-testpy.yml:
- Around line 127-147: Pin the ccm dependency in the “Install ccm and Scylla
test.py Python dependencies” step to a specific immutable commit or release tag
instead of the moving master branch, preserving the existing uv pip install flow
and all other dependencies.
- Around line 40-41: Update both checkout steps in the workflow to set
persist-credentials to false, including the driver checkout and the other
checkout identified by the comment. Keep the existing checkout actions and
pinned revisions unchanged.

In `@scripts/run_scylla_driver_testpy.sh`:
- Line 4: Remove the duplicated stable release filter definition from
scripts/run_scylla_driver_testpy.sh and rely on the workflow-provided
SCYLLA_VERSION when invoked through .github/workflows/scylla-driver-testpy.yml;
if standalone fallback behavior must remain, centralize or reuse a single shared
definition so it cannot drift from the workflow’s stable_filter.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: addf001c-2994-4e24-b5c2-8ba9c40dafe4

📥 Commits

Reviewing files that changed from the base of the PR and between bcc2d3d and 7c37234.

📒 Files selected for processing (3)
  • .github/workflows/scylla-driver-testpy.yml
  • scripts/run_scylla_driver_testpy.sh
  • scripts/scylla-driver-testpy-tests.txt

Comment on lines +88 to +103
- name: Resolve latest stable Scylla release
id: scylla-release
run: |
stable_filter='^[0-9]{4}$.^[0-9]+$.^[0-9]+$ and LAST.LAST.LAST'
docker_version="$(get-version --source dockerhub-imagetag --repo scylladb/scylla -filters "$stable_filter" | tr -d '"')"
github_version="$(get-version --source github-tag --repo scylladb/scylladb --prefix scylla- --out-no-prefix --filters "$stable_filter" | tr -d '"')"
if [[ -z "$docker_version" || -z "$github_version" ]]; then
echo "Failed to resolve latest stable Scylla release" >&2
exit 1
fi
if [[ "$docker_version" != "$github_version" ]]; then
echo "Latest stable Scylla release mismatch: DockerHub=$docker_version GitHub=$github_version" >&2
exit 1
fi
git ls-remote --exit-code --refs --tags https://github.com/scylladb/scylladb.git "refs/tags/scylla-$docker_version"
echo "version=$docker_version" >> "$GITHUB_OUTPUT"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

scylladb-actions get-version v0.4.3 CLI filters flag syntax documentation

💡 Result:

The scylladb-actions/get-version tool, including version v0.4.3, utilizes a filter syntax that supports pattern matching and global position selection to filter software versions [1]. Filter Syntax Overview The tool's filter system allows for combining different types of filters using 'and' / 'or' operators [1]. 1. Pattern Filters (Component-Level): These match specific semantic version components (e.g., Major.Minor.Patch) [1]. Regular expressions are commonly used here to match version segments, such as "^[0-9]{4}$.^[0-9]+$.^[0-9]+$" [2][3][4]. 2. Global Position Filters (List-Level): These allow selection of versions based on their position in the sorted list, such as using 'LAST' to get the newest version, or 'LAST-1' to get the second-newest [1][2][3]. CLI Usage The syntax for applying filters in the CLI is:./get-version --source --repo --filters "" [1] Example usage frequently seen in ScyllaDB repositories involves concatenating pattern and position filters:./get-version --source dockerhub-imagetag --repo scylladb/scylla -filters "^[0-9]{4}$.^[0-9]+$.^[0-9]+$ and LAST.1.LAST" [2][3][4] In this example, the filter matches a specific version pattern and selects a version based on its positional index (LAST, 1, LAST) [1][2]. Note that in some implementation contexts, users pipe the output to tr -d '"' to strip quotation marks [2][3][4].

Citations:


🌐 Web query:

GitHub scylladb-actions get-version v0.4.3 command line options single dash filters

💡 Result:

In the scylladb-actions/get-version tool, command-line arguments are typically specified using double dashes (e.g., --filters, --source, --repo) [1]. While some real-world usage examples in CI workflows have occasionally used a single dash for the filters flag (e.g., -filters) [2][3][4][5][6], this is a deviation from standard CLI conventions rather than a supported feature for "single dash filters." The official documentation and repository usage demonstrate the use of double dashes for flags [1]. The filters option accepts a specific syntax for semantic version filtering, which can include pattern matching and positional keywords like LAST [1]. If you encounter documentation or scripts referencing -filters, it should be interpreted as the --filters option [1][2]. It is recommended to use the standard double-dash syntax (--filters) to ensure compatibility and adhere to the tool's intended interface [1].

Citations:


🌐 Web query:

site:github.com/scylladb-actions/get-version v0.4.3 "long-flags" "short-flags" "-filter"

💡 Result:

There is no widely recognized software documentation or standard library for v0.4.3 that explicitly defines the terms long-flags and short-flags as formal nomenclature in the context of a -filter argument [1]. The terms long flags and short flags are common industry vernacular used to describe command-line interface arguments, where short flags are typically single characters preceded by a single dash (e.g., -f) and long flags are descriptive names preceded by double dashes (e.g., --filter) [1]. The provided search results indicate that the scylladb-actions/get-version tool uses a --filters argument to support complex version matching, but it does not use the specific phrasing long-flags or short-flags in its documentation [1]. If you are encountering these terms in a specific software package or library, it is likely that the author is using these descriptive names to distinguish between flag formats rather than referencing a version-specific feature of v0.4.3.

Citations:


🌐 Web query:

scylladb csharp-driver .github get-version -filters "and LAST"

💡 Result:

The latest release version of the ScyllaDB C# Driver as of July 27, 2026, is v3.22.0.2, which was released on December 1, 2025 [1]. You can find this package on NuGet under the name ScyllaDBCSharpDriver [1][2]. To get the version of the driver in your own project, you can typically inspect the assembly version or the package version defined in your project file (e.g.,.csproj) [2]. For further details: - GitHub Repository: https://github.com/scylladb/csharp-driver [1] - Official Documentation: https://csharp-driver.docs.scylladb.com/ [3] - NuGet Gallery: https://www.nuget.org/packages/ScyllaDBCSharpDriver [2]

Citations:


🌐 Web query:

scylladb driver tests get-version -filters LAST.scylla-"

💡 Result:

The syntax LAST.scylla-" or more commonly LAST.LAST.LAST-X is used within ScyllaDB's CI/CD automation and helper scripts to dynamically resolve and fetch specific versions of ScyllaDB from container registries (such as Docker Hub) [1][2]. These strings are arguments passed to a utility tool typically called get-version (or a similar version-fetching script like version_fetch.py) [1][2][3]. This tool parses version tags from a repository (e.g., scylladb/scylla) based on defined filters to automate the testing of drivers against various ScyllaDB releases [1][2]. The components of these strings generally follow a pattern based on MAJOR.MINOR.PATCH semantic versioning [4]: 1. LAST.LAST.LAST-X: This refers to the most recent release, where X is an offset to select previous patch or minor versions (e.g., LAST.LAST.LAST-1 selects the prior patch version) [1][2]. 2. LAST.1.LAST or LAST-1.1.LAST: These variations are often used to identify specific Long-Term Support (LTS) release streams by targeting the appropriate MAJOR.MINOR segments [1][2]. These mechanisms ensure that integration tests for ScyllaDB drivers (such as the C#, Go, and C++ drivers) can be automatically configured to run against the latest supported or prior versions without manual hardcoding [1][2][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow target =="
if [ -f .github/workflows/scylla-driver-testpy.yml ]; then
  sed -n '70,115p' .github/workflows/scylla-driver-testpy.yml
else
  echo "workflow file missing"
fi

echo
echo "== get-version usage and references in repository =="
rg -n -- hidden --glob '!node_modules/**' --glob '!build/**' --glob '!dist/**' 'get-version|--source|--repo|--filters|-filters|scylladb-actions/get-version' .github workflows . 2>/dev/null | head -200

echo
echo "== files likely defining provider CLI options =="
rg -n --hidden --glob '!node_modules/**' --glob '!build/**' --glob '!dist/**' 'long-flags|AcceptMultiple\(--filters|--Filters|-filters|--filters|flag\.String\|--filters|Flags' . 2>/dev/null | head -200

Repository: scylladb/python-driver

Length of output: 3029


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== exact matches for get-version option syntax =="
rg -n --hidden --glob '!node_modules/**' --glob '!build/**' --glob '!dist/**' --glob '!docs/**' --glob '!tests/**' --glob '!*.lock' '(\bget-version\b|scylladb-actions/get-version)' . 2>/dev/null | head -200

echo
echo "== inspect variable declaration for GET_VERSION_VERSION =="
rg -n --hidden --glob '!node_modules/**' --glob '!build/**' --glob '!dist/**' 'GET_VERSION_VERSION|github\.scylladb' .github workflows 2>/dev/null || true

Repository: scylladb/python-driver

Length of output: 1913


🏁 Script executed:

#!/bin/bash
set -euo pipefail

tmp="$(mktemp -d)"
echo "$tmp" > /tmp/get-version-dl-tmp.txt

echo "== download v0.4.3 go-getversion docs/list of binary? =="
python3 - <<'PY'
import http.client, urllib.request

url = "https://github.com/scylladb-actions/get-version/releases/download/v0.4.3/get-version_0.4.3_linux_amd64v3.zip"
try:
    with urllib.request.urlopen(url, timeout=20) as r:
        print("status=", r.status, "content-type=", r.getheader("Content-Type"), "len=", len(r.read()))
except Exception as e:
    print("download error:", type(e).__name__, e)
PY

echo
echo "== fetch Go source from release assets? =="
python3 - <<'PY'
import urllib.request
for asset in (
    "https://github.com/scylladb-actions/get-version/releases/download/v0.4.3/get-version.go",
    "https://raw.githubusercontent.com/scylladb-actions/get-version/v0.4.3/get-version.go",
    "https://raw.githubusercontent.com/scylladb-actions/get-version/v0.4.3/main.go",
):
    try:
        data = urllib.request.urlopen(asset, timeout=20).read().decode("utf-8")
    except Exception as e:
        print("asset", asset, "ERROR", type(e).__name__, e)
        continue
    print("asset", asset, "FOUND", len(data), "bytes")
    for needle in ("filters", "Flags", "flag.", "--filters", "-filters"):
        if needle in data:
            print(" contains", needle)
    print("--- relevant lines ---")
    nums = [str(n+1) for n, line in enumerate(data.splitlines()) if needle in line for needle in ("filters", "flag.", "--filters", "-filters", "Positional")]
    # not used in previous line because undefined but ok
    for i,line in enumerate(data.splitlines()[70:190], start=71):
        if "filters" in line or "Source" in line or "Repo" in line:
            print(f"{i}: {line}")
PY

Repository: scylladb/python-driver

Length of output: 1140


Use the documented get-version option spellings.

-filters is not the standard long flag for this CLI; use --filters consistently with --source, --repo, --prefix, and --out-no-prefix so DockerHub tag resolution doesn’t fail parsing the command-line contract.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/scylla-driver-testpy.yml around lines 88 - 103, Update
both get-version invocations in the “Resolve latest stable Scylla release” step
to use the documented --filters option spelling, preserving the existing
stable_filter value and all other arguments.

Comment on lines +156 to +166
scylla_exe="${SCYLLA_EXE:-}"
if [[ -z "$scylla_exe" ]]; then
if ! scylla_exe="$(find_scylla_executable "$version")"; then
pull_scylla_with_ccm "$version"
scylla_exe="$(find_scylla_executable "$version")"
fi
fi
if [[ ! -x "$scylla_exe" ]]; then
echo "Scylla executable is not available or executable: $scylla_exe" >&2
return 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Second find_scylla_executable call can abort before the intended error message.

After pull_scylla_with_ccm, scylla_exe="$(find_scylla_executable "$version")" (line 160) is a plain assignment, not inside a conditional. Under set -e, if find_scylla_executable still can't find the binary (returns 1), the script exits immediately here rather than reaching the descriptive "Scylla executable is not available or executable" message on lines 163-166, making CI failures harder to diagnose.

🐛 Proposed fix
     if ! scylla_exe="$(find_scylla_executable "$version")"; then
         pull_scylla_with_ccm "$version"
-        scylla_exe="$(find_scylla_executable "$version")"
+        scylla_exe="$(find_scylla_executable "$version")" || true
     fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
scylla_exe="${SCYLLA_EXE:-}"
if [[ -z "$scylla_exe" ]]; then
if ! scylla_exe="$(find_scylla_executable "$version")"; then
pull_scylla_with_ccm "$version"
scylla_exe="$(find_scylla_executable "$version")"
fi
fi
if [[ ! -x "$scylla_exe" ]]; then
echo "Scylla executable is not available or executable: $scylla_exe" >&2
return 1
fi
scylla_exe="${SCYLLA_EXE:-}"
if [[ -z "$scylla_exe" ]]; then
if ! scylla_exe="$(find_scylla_executable "$version")"; then
pull_scylla_with_ccm "$version"
scylla_exe="$(find_scylla_executable "$version")" || true
fi
fi
if [[ ! -x "$scylla_exe" ]]; then
echo "Scylla executable is not available or executable: $scylla_exe" >&2
return 1
fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/run_scylla_driver_testpy.sh` around lines 156 - 166, Update the
fallback `find_scylla_executable` call in the executable discovery flow to run
in a conditional or otherwise suppress `set -e` termination when it fails.
Preserve the subsequent `scylla_exe` validation so failures reach the existing
descriptive error message and return path.

Copilot AI review requested due to automatic review settings July 27, 2026 20:21
@dkropachev
dkropachev marked this pull request as draft July 27, 2026 20:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (2)

.github/workflows/scylla-driver-testpy.yml:71

  • These service executables are downloaded without integrity checks, and the MinIO URLs are mutable release/linux-amd64 endpoints. A changed or compromised upstream artifact can therefore execute in CI, and even a legitimate update can make identical commits behave differently. Pin MinIO and mc to immutable release artifacts and verify committed SHA-256 digests for all three downloads before making or extracting them.
          curl -fsSLo "$RUNNER_TEMP/bin/minio" https://dl.min.io/server/minio/release/linux-amd64/minio
          curl -fsSLo "$RUNNER_TEMP/bin/mc" https://dl.min.io/client/mc/release/linux-amd64/mc
          chmod +x "$RUNNER_TEMP/bin/minio" "$RUNNER_TEMP/bin/mc"
          curl -fsSL "https://github.com/Shopify/toxiproxy/releases/download/v${TOXIPROXY_VERSION}/toxiproxy_${TOXIPROXY_VERSION}_linux_amd64.tar.gz" \
            | tar -xz -C "$RUNNER_TEMP/bin" toxiproxy-server toxiproxy-cli

.github/workflows/scylla-driver-testpy.yml:130

  • Installing CCM from the moving master branch makes this compatibility result depend on whichever commit happens to be current and executes unreviewed upstream changes in CI. Pin an audited commit SHA (or consume a locked dependency) so CCM changes are updated deliberately and failures remain attributable to the driver or selected Scylla release.
            "ccm @ git+https://github.com/scylladb/scylla-ccm.git@master" \

- setup.py
workflow_dispatch:

jobs:
Comment on lines +82 to +85
curl -fsSLo "$RUNNER_TEMP/get-version.zip" \
"https://github.com/scylladb-actions/get-version/releases/download/v${GET_VERSION_VERSION}/get-version_${GET_VERSION_VERSION}_linux_amd64v3.zip"
unzip -q -o "$RUNNER_TEMP/get-version.zip" -d "$RUNNER_TEMP/bin"
chmod +x "$RUNNER_TEMP/bin/get-version"
Copilot AI review requested due to automatic review settings July 27, 2026 20:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

Comment on lines +107 to +110
- name: Resolve latest stable Scylla release
id: scylla-release
run: |
version="$(scripts/run_scylla_driver_testpy.sh --resolve-scylla-version)"
jobs="${SCYLLA_TESTPY_JOBS:-1}"
max_failures="${SCYLLA_TESTPY_MAX_FAILURES:-1}"
timeout="${SCYLLA_TESTPY_TIMEOUT:-1800}"
session_timeout="${SCYLLA_TESTPY_SESSION_TIMEOUT:-7200}"
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.

2 participants