diff --git a/.github/workflows/benchmark-community-world.yml b/.github/workflows/benchmark-community-world.yml index 8dbd003dc0..b40eaca553 100644 --- a/.github/workflows/benchmark-community-world.yml +++ b/.github/workflows/benchmark-community-world.yml @@ -86,6 +86,21 @@ jobs: sleep 2 done + - name: Start SurrealDB + if: ${{ inputs.service-type == 'surrealdb' }} + run: | + docker run -d --name surrealdb -p 8000:8000 \ + surrealdb/surrealdb:v3 \ + start --user root --pass root --bind 0.0.0.0:8000 memory + echo "Waiting for SurrealDB to be ready..." + for i in {1..30}; do + if curl -sf http://localhost:8000/health &>/dev/null; then + echo "SurrealDB is ready" + break + fi + sleep 2 + done + - name: Setup environment uses: ./.github/actions/setup-workflow-dev with: @@ -143,3 +158,4 @@ jobs: run: | docker stop mongodb 2>/dev/null || true docker stop redis 2>/dev/null || true + docker stop surrealdb 2>/dev/null || true diff --git a/.github/workflows/e2e-community-world.yml b/.github/workflows/e2e-community-world.yml index 0048eed477..1d5f53426c 100644 --- a/.github/workflows/e2e-community-world.yml +++ b/.github/workflows/e2e-community-world.yml @@ -82,6 +82,21 @@ jobs: sleep 2 done + - name: Start SurrealDB + if: ${{ inputs.service-type == 'surrealdb' }} + run: | + docker run -d --name surrealdb -p 8000:8000 \ + surrealdb/surrealdb:v3 \ + start --user root --pass root --bind 0.0.0.0:8000 memory + echo "Waiting for SurrealDB to be ready..." + for i in {1..30}; do + if curl -sf http://localhost:8000/health &>/dev/null; then + echo "SurrealDB is ready" + break + fi + sleep 2 + done + - name: Setup environment uses: ./.github/actions/setup-workflow-dev with: @@ -135,3 +150,4 @@ jobs: run: | docker stop mongodb 2>/dev/null || true docker stop redis 2>/dev/null || true + docker stop surrealdb 2>/dev/null || true diff --git a/scripts/create-community-worlds-matrix.mjs b/scripts/create-community-worlds-matrix.mjs index 75b3aec8b1..0efdbbb02b 100644 --- a/scripts/create-community-worlds-matrix.mjs +++ b/scripts/create-community-worlds-matrix.mjs @@ -50,9 +50,9 @@ const matrix = { let serviceType = 'none'; if (world.services && world.services.length > 0) { // Use the first service's name as the service type - // Currently supports: mongodb, redis + // Currently supports: mongodb, redis, surrealdb const serviceName = world.services[0].name; - if (['mongodb', 'redis'].includes(serviceName)) { + if (['mongodb', 'redis', 'surrealdb'].includes(serviceName)) { serviceType = serviceName; } } diff --git a/worlds-manifest.json b/worlds-manifest.json index 4e72dc0174..08b1615b0a 100644 --- a/worlds-manifest.json +++ b/worlds-manifest.json @@ -129,6 +129,38 @@ } ] }, + { + "id": "surrealdb", + "type": "community", + "package": "workflow-world-surrealdb", + "name": "SurrealDB", + "description": "SurrealDB world using LIVE SELECT for queueing and real-time streaming", + "repository": "https://github.com/sepcnt/workflow-world-surrealdb", + "docs": "https://github.com/sepcnt/workflow-world-surrealdb", + "features": [], + "env": { + "WORKFLOW_TARGET_WORLD": "workflow-world-surrealdb", + "WORKFLOW_SURREAL_URL": "ws://127.0.0.1:8000/rpc", + "WORKFLOW_SURREAL_NAMESPACE": "workflow", + "WORKFLOW_SURREAL_DATABASE": "workflow", + "WORKFLOW_SURREAL_USERNAME": "root", + "WORKFLOW_SURREAL_PASSWORD": "root" + }, + "services": [ + { + "name": "surrealdb", + "image": "surrealdb/surrealdb:v3", + "ports": ["8000:8000"], + "healthCheck": { + "cmd": "curl -sf http://localhost:8000/health || exit 1", + "interval": "5s", + "timeout": "3s", + "retries": 10 + } + } + ], + "setup": "pnpm exec workflow-surreal-setup" + }, { "id": "jazz", "type": "community",