@@ -8,13 +8,13 @@ execution_time_limit:
88global_job_config :
99 env_vars :
1010 - name : LIBRDKAFKA_VERSION
11- value : v2.11 .1
11+ value : v2.12 .1
1212 prologue :
1313 commands :
1414 - checkout
1515 - mkdir artifacts
1616blocks :
17- - name : " Wheels: OSX x64 - Python 3.7 -3.12"
17+ - name : " Wheels: OSX x64 - Python 3.8 -3.12"
1818 run :
1919 when : " tag =~ '.*'"
2020 dependencies : []
@@ -34,7 +34,7 @@ blocks:
3434 - PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse 2.16.2
3535 - tar -czf wheelhouse-macOS-${ARCH}.tgz wheelhouse
3636 - artifact push workflow wheelhouse-macOS-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
37- - name : " Wheels: OSX x64 - Python 3.13"
37+ - name : " Wheels: OSX x64 - Python 3.13-3.14 "
3838 run :
3939 when : " tag =~ '.*'"
4040 dependencies : []
@@ -54,10 +54,10 @@ blocks:
5454 jobs :
5555 - name : Build
5656 commands :
57- - sem-version python 3.11
57+ - sem-version python 3.13
5858 - PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
59- - tar -czf wheelhouse-macOS-${ARCH}-py313.tgz wheelhouse
60- - artifact push workflow wheelhouse-macOS-${ARCH}-py313.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313.tgz/
59+ - tar -czf wheelhouse-macOS-${ARCH}-py313-plus .tgz wheelhouse
60+ - artifact push workflow wheelhouse-macOS-${ARCH}-py313-plus .tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313-plus .tgz/
6161 - name : " Wheels: OSX arm64 - Python 3.8-3.12"
6262 run :
6363 when : " tag =~ '.*'"
@@ -80,7 +80,7 @@ blocks:
8080 - PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse 2.16.2
8181 - tar -czf wheelhouse-macOS-${ARCH}.tgz wheelhouse
8282 - artifact push workflow wheelhouse-macOS-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
83- - name : " Wheels: OSX arm64 - Python 3.13"
83+ - name : " Wheels: OSX arm64 - Python 3.13-3.14 "
8484 run :
8585 when : " tag =~ '.*'"
8686 dependencies : []
@@ -102,10 +102,10 @@ blocks:
102102 jobs :
103103 - name : Build
104104 commands :
105- - sem-version python 3.11
105+ - sem-version python 3.13
106106 - PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
107- - tar -czf wheelhouse-macOS-${ARCH}-py313.tgz wheelhouse
108- - artifact push workflow wheelhouse-macOS-${ARCH}-py313.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313.tgz/
107+ - tar -czf wheelhouse-macOS-${ARCH}-py313-plus .tgz wheelhouse
108+ - artifact push workflow wheelhouse-macOS-${ARCH}-py313-plus .tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313-plus .tgz/
109109 - name : " Wheels: Linux arm64"
110110 run :
111111 when : " tag =~ '.*'"
@@ -122,7 +122,8 @@ blocks:
122122 jobs :
123123 - name : Build
124124 commands :
125- - ./tools/build-manylinux.sh "${LIBRDKAFKA_VERSION#v}"
125+ - sem-version python 3.13
126+ - ./tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
126127 - tar -czf wheelhouse-linux-${ARCH}.tgz wheelhouse
127128 - artifact push workflow wheelhouse-linux-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
128129 - name : " Wheels: Linux x64"
@@ -141,6 +142,7 @@ blocks:
141142 jobs :
142143 - name : Build
143144 commands :
145+ - sem-version python 3.11
144146 - ./tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
145147 - tar -czf wheelhouse-linux-${ARCH}.tgz wheelhouse
146148 - artifact push workflow wheelhouse-linux-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
@@ -170,6 +172,8 @@ blocks:
170172 - name : MSYSTEM
171173 value : UCRT64
172174 commands :
175+ - pyenv install 3.11.9
176+ - pyenv global 3.11.9
173177 - bash tools/mingw-w64/semaphore_commands.sh
174178 - bash tools/wheels/install-librdkafka.sh $env:LIBRDKAFKA_VERSION.TrimStart("v") dest
175179 - tools/wheels/build-wheels.bat x64 win_amd64 dest wheelhouse
@@ -275,14 +279,114 @@ blocks:
275279 - python3 -m venv _venv && source _venv/bin/activate
276280 - chmod u+r+x tools/source-package-verification.sh
277281 - tools/source-package-verification.sh
282+ - name : " Ducktape Performance Tests (Linux x64)"
283+ dependencies : []
284+ task :
285+ agent :
286+ machine :
287+ type : s1-prod-ubuntu24-04-amd64-3
288+ env_vars :
289+ - name : OS_NAME
290+ value : linux
291+ - name : ARCH
292+ value : x64
293+ - name : BENCHMARK_BOUNDS_CONFIG
294+ value : tests/ducktape/producer_benchmark_bounds.json
295+ - name : BENCHMARK_ENVIRONMENT
296+ value : ci
297+ prologue :
298+ commands :
299+ - ' [[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
300+ jobs :
301+ - name : Build and Tests
302+ commands :
303+ # Setup Python environment
304+ - sem-version python 3.9
305+ - python3 -m venv _venv && source _venv/bin/activate
306+
307+ # Install ducktape framework and additional dependencies
308+ - pip install ducktape psutil
309+
310+ # Install existing test requirements
311+ - pip install -r requirements/requirements-tests-install.txt
312+
313+ # Build and install confluent-kafka from source
314+ - lib_dir=dest/runtimes/$OS_NAME-$ARCH/native
315+ - tools/wheels/install-librdkafka.sh "${LIBRDKAFKA_VERSION#v}" dest
316+ - export CFLAGS="$CFLAGS -I${PWD}/dest/build/native/include"
317+ - export LDFLAGS="$LDFLAGS -L${PWD}/${lib_dir}"
318+ - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/$lib_dir"
319+ - python3 -m pip install -e .
320+
321+ # Store project root for reliable navigation
322+ - PROJECT_ROOT="${PWD}"
323+
324+ # Start Kafka cluster and Schema Registry using dedicated ducktape compose file (KRaft mode)
325+ - cd "${PROJECT_ROOT}/tests/docker"
326+ - docker-compose -f docker-compose.ducktape.yml up -d kafka schema-registry
327+
328+ # Debug: Check container status and logs
329+ - echo "=== Container Status ==="
330+ - docker-compose -f docker-compose.ducktape.yml ps
331+ - echo "=== Kafka Logs ==="
332+ - docker-compose -f docker-compose.ducktape.yml logs kafka | tail -50
333+
334+ # Wait for Kafka to be ready (using PLAINTEXT listener for external access)
335+ - |
336+ timeout 1800 bash -c '
337+ counter=0
338+ until docker-compose -f docker-compose.ducktape.yml exec -T kafka kafka-topics --bootstrap-server localhost:9092 --list >/dev/null 2>&1; do
339+ echo "Waiting for Kafka... (attempt $((counter+1)))"
340+
341+ # Show logs every 4th attempt (every 20 seconds)
342+ if [ $((counter % 4)) -eq 0 ] && [ $counter -gt 0 ]; then
343+ echo "=== Recent Kafka Logs ==="
344+ docker-compose -f docker-compose.ducktape.yml logs --tail=10 kafka
345+ echo "=== Container Status ==="
346+ docker-compose -f docker-compose.ducktape.yml ps kafka
347+ fi
348+
349+ counter=$((counter+1))
350+ sleep 5
351+ done
352+ '
353+ - echo "Kafka cluster is ready!"
354+
355+ # Wait for Schema Registry to be ready
356+ - echo "=== Waiting for Schema Registry ==="
357+ - |
358+ timeout 300 bash -c '
359+ counter=0
360+ until curl -f http://localhost:8081/subjects >/dev/null 2>&1; do
361+ echo "Waiting for Schema Registry... (attempt $((counter+1)))"
362+
363+ # Show logs every 3rd attempt (every 15 seconds)
364+ if [ $((counter % 3)) -eq 0 ] && [ $counter -gt 0 ]; then
365+ echo "=== Recent Schema Registry Logs ==="
366+ docker-compose -f docker-compose.ducktape.yml logs --tail=10 schema-registry
367+ echo "=== Schema Registry Container Status ==="
368+ docker-compose -f docker-compose.ducktape.yml ps schema-registry
369+ fi
370+
371+ counter=$((counter+1))
372+ sleep 5
373+ done
374+ '
375+ - echo "Schema Registry is ready!"
376+
377+ # Run standard ducktape tests with CI bounds
378+ - cd "${PROJECT_ROOT}" && PYTHONPATH="${PROJECT_ROOT}" python tests/ducktape/run_ducktape_test.py
379+
380+ # Cleanup
381+ - cd "${PROJECT_ROOT}/tests/docker" && docker-compose -f docker-compose.ducktape.yml down -v || true
278382 - name : " Packaging"
279383 run :
280384 when : " tag =~ '.*'"
281385 dependencies :
282- - " Wheels: OSX x64 - Python 3.7 -3.12"
283- - " Wheels: OSX x64 - Python 3.13"
386+ - " Wheels: OSX x64 - Python 3.8 -3.12"
387+ - " Wheels: OSX x64 - Python 3.13-3.14 "
284388 - " Wheels: OSX arm64 - Python 3.8-3.12"
285- - " Wheels: OSX arm64 - Python 3.13"
389+ - " Wheels: OSX arm64 - Python 3.13-3.14 "
286390 - " Wheels: Linux arm64"
287391 - " Wheels: Linux x64"
288392 - " Wheels: Windows"
@@ -312,6 +416,6 @@ after_pipeline:
312416 - name : SonarQube
313417 commands :
314418 - checkout
315- - sem-version java 11
419+ - sem-version java 17
316420 - artifact pull workflow coverage.xml
317- - emit-sonarqube-data --run_only_sonar_scan
421+ - emit-sonarqube-data --enable_sonarqube_enterprise -- run_only_sonar_scan
0 commit comments