4646 required : false
4747 default : ' latest'
4848 type : string
49+ num_query_clients :
50+ description : ' Number of concurrent query clients'
51+ required : false
52+ default : ' 2'
53+ type : string
4954 enable_module_debug_logging :
5055 description : ' Enable debug logs'
5156 required : false
6671 required : false
6772 default : ' 16Gi'
6873 type : string
74+ executor_memory_limit :
75+ description : ' Memory limit for the executor pod (e.g. 16Gi, 62Gi)'
76+ required : false
77+ default : ' 16Gi'
78+ type : string
79+ custom_image :
80+ description : ' Custom runtime container image (e.g. ghcr.io/spiceai/spiceai-dev:spicebench-sf10). Overrides the default channel image. Requires the internal update channel on the target SCP environment.'
81+ required : false
82+ default : ' '
83+ type : string
6984jobs :
7085 run-spicebench :
7186 name : Run spicebench
@@ -134,7 +149,7 @@ jobs:
134149 SCENARIO : ${{ github.event.inputs.scenario || 'tpch' }}
135150 SYSTEM_UNDER_TEST : ${{ github.event.inputs.system_under_test || 'spice_cloud' }}
136151 SYSTEM_ADAPTER : ${{ github.event.inputs.system_under_test || 'spice_cloud' }}
137- NUM_QUERY_CLIENTS : ' 8 '
152+ NUM_QUERY_CLIENTS : ${{ github.event.inputs.num_query_clients || '2' }}
138153 ETL_BUCKET : ' spicebench'
139154 ETL_PREFIX : ${{ github.event.inputs.etl_type == 'changes' && 'data-gen-mutable' || 'data-gen' }}
140155 SCALE_FACTOR : ${{ github.event.inputs.scale_factor || '1' }}
@@ -155,6 +170,8 @@ jobs:
155170 DISABLE_TEARDOWN : ${{ github.event.inputs.disable_teardown || 'false' }}
156171 ENABLE_PVC : ${{ github.event.inputs.enable_pvc || 'false' }}
157172 SPIDAPTER_APP_MEMORY_LIMIT : ${{ github.event.inputs.app_memory_limit || '16Gi' }}
173+ SPIDAPTER_EXECUTOR_MEMORY_LIMIT : ${{ github.event.inputs.executor_memory_limit || '16Gi' }}
174+ CUSTOM_IMAGE : ${{ github.event.inputs.custom_image || '' }}
158175 run : |
159176 set -euo pipefail
160177 if [ "${ENABLE_MODULE_DEBUG_LOGGING}" = "true" ]; then
@@ -201,13 +218,43 @@ jobs:
201218 ADAPTER_DOCKER_OPTS="run -i -e SPIDAPTER_EXECUTOR_REPLICAS=4 -e SPICEAI_API_KEY -e SPICE_CLOUD_API_URL -e AWS_ACCESS_KEY_ID=${S3_AWS_ACCESS_KEY_ID} -e AWS_SECRET_ACCESS_KEY=${S3_AWS_SECRET_ACCESS_KEY} -e SPIDAPTER_ICEBERG_REGION -e SPIDAPTER_ICEBERG_CATALOG_FROM -e SCHEDULER_STATE_LOCATION"
202219
203220 ADAPTER_DOCKER_OPTS="${ADAPTER_DOCKER_OPTS} -e SPIDAPTER_APP_MEMORY_LIMIT=${SPIDAPTER_APP_MEMORY_LIMIT}"
221+ ADAPTER_DOCKER_OPTS="${ADAPTER_DOCKER_OPTS} -e SPIDAPTER_EXECUTOR_MEMORY_LIMIT=${SPIDAPTER_EXECUTOR_MEMORY_LIMIT}"
222+
223+ # Parse custom image into registry, name, and tag for spidapter.
224+ # Expected format: registry/image:tag (e.g. ghcr.io/spiceai/spiceai-dev:spicebench-sf10)
225+ # Parses as: registry=ghcr.io, image=spiceai/spiceai-dev, tag=spicebench-sf10
226+ if [ -n "${CUSTOM_IMAGE}" ]; then
227+ IMAGE_WITH_TAG="${CUSTOM_IMAGE}"
228+ if [[ "${IMAGE_WITH_TAG}" == *":"* ]]; then
229+ SPIDAPTER_IMAGE_TAG="${IMAGE_WITH_TAG##*:}"
230+ IMAGE_WITHOUT_TAG="${IMAGE_WITH_TAG%:*}"
231+ else
232+ SPIDAPTER_IMAGE_TAG=""
233+ IMAGE_WITHOUT_TAG="${IMAGE_WITH_TAG}"
234+ fi
235+ # Registry is the first path component (hostname), image is the rest
236+ SPIDAPTER_IMAGE_REGISTRY="${IMAGE_WITHOUT_TAG%%/*}"
237+ SPIDAPTER_IMAGE_NAME="${IMAGE_WITHOUT_TAG#*/}"
238+
239+ echo "Custom image: registry=${SPIDAPTER_IMAGE_REGISTRY}, name=${SPIDAPTER_IMAGE_NAME}, tag=${SPIDAPTER_IMAGE_TAG}"
240+ ADAPTER_DOCKER_OPTS="${ADAPTER_DOCKER_OPTS} -e SPIDAPTER_IMAGE_REGISTRY=${SPIDAPTER_IMAGE_REGISTRY} -e SPIDAPTER_IMAGE_NAME=${SPIDAPTER_IMAGE_NAME}"
241+ if [ -n "${SPIDAPTER_IMAGE_TAG}" ]; then
242+ ADAPTER_DOCKER_OPTS="${ADAPTER_DOCKER_OPTS} -e SPIDAPTER_IMAGE_TAG=${SPIDAPTER_IMAGE_TAG}"
243+ fi
244+ fi
204245
205246 if [ "${ENABLE_PVC}" = "true" ]; then
206247 echo "PVC enabled: app=3GB, executor=2GB"
207248 ADAPTER_DOCKER_OPTS="${ADAPTER_DOCKER_OPTS} -e SPIDAPTER_APP_STORAGE_SIZE_GB=3 -e SPIDAPTER_EXECUTOR_STORAGE_SIZE_GB=2 -e SPIDAPTER_CAYENNE_DATA_DIR=/data/data -e SPIDAPTER_CAYENNE_METADATA_DIR=/data/metadata"
208249 fi
209250
210- ADAPTER_ARGS="${ADAPTER_DOCKER_OPTS} ghcr.io/spiceai/spidapter:${{ github.event.inputs.spidapter_version || 'latest' }} stdio --verbose --channel nightly"
251+ # Use internal channel when a custom image is specified, otherwise nightly.
252+ SPIDAPTER_CHANNEL="nightly"
253+ if [ -n "${CUSTOM_IMAGE}" ]; then
254+ SPIDAPTER_CHANNEL="internal"
255+ fi
256+
257+ ADAPTER_ARGS="${ADAPTER_DOCKER_OPTS} ghcr.io/spiceai/spidapter:${{ github.event.inputs.spidapter_version || 'latest' }} stdio --verbose --channel ${SPIDAPTER_CHANNEL}"
211258 ADAPTER_ENVS=""
212259
213260 NO_TEARDOWN_ARG=""
0 commit comments