Skip to content

Commit 29161f2

Browse files
feat: Add custom_image input to debug Spice Cloud workflow
Add a custom_image workflow input to run_spicebench_debug_spice_cloud that allows specifying a custom runtime container image (e.g. ghcr.io/spiceai/spiceai-dev:spicebench-sf10) instead of the default nightly image. When set, the image reference is parsed into registry, image name, and tag components and passed through to spidapter as SPIDAPTER_IMAGE_REGISTRY, SPIDAPTER_IMAGE_NAME, and SPIDAPTER_IMAGE_TAG env vars. The channel is automatically switched to internal. Also adds executor_memory_limit input and fixes NUM_QUERY_CLIENTS to match the main workflow (2 instead of 8).
1 parent 6bb801e commit 29161f2

1 file changed

Lines changed: 49 additions & 2 deletions

File tree

.github/workflows/run_spicebench_debug_spice_cloud.yml

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ on:
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
@@ -66,6 +71,16 @@ on:
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
6984
jobs:
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

Comments
 (0)