원클릭으로
judo-deployment-docs
// Deployment and build documentation for JUDO applications. Covers judo.sh commands, Docker setup, Karaf configuration, and production deployment.
// Deployment and build documentation for JUDO applications. Covers judo.sh commands, Docker setup, Karaf configuration, and production deployment.
ESM-to-UI mapping reference for JUDO React frontends. Covers widget mappings, table and navigation element mappings, and the ESM→UI transformation model.
Frontend development guide for JUDO React applications. Covers hooks, theming, i18n, and Pandino DI customization patterns.
ESM metamodel reference for JUDO. Covers namespace, type, structure, operation, accesspoint, UI, UI-behaviour, and UI-visual-styleguide packages with element-level attribute and constraint definitions.
Model documentation for JUDO applications. Covers ESM metamodel, cardinality, CRUD flags, and advanced modeling patterns.
Backend development guide for JUDO applications. Covers custom operations, interceptors, validators, data access, and error handling.
E2E testing guide for JUDO React frontends using Playwright. Covers test patterns, helpers, and browser automation.
| name | judo-deployment-docs |
| description | Deployment and build documentation for JUDO applications. Covers judo.sh commands, Docker setup, Karaf configuration, and production deployment. |
| disable-model-invocation | false |
| user-invocable | false |
| agent | general-purpose |
The {{ lowerCase model.name }} project uses a sophisticated build system orchestrated by judo.sh script and Maven. This documentation provides comprehensive guidance for building, deploying, and troubleshooting the application.
Note: Throughout this documentation, {{ lowerCase model.name \}} refers to the application name from judo.properties (app_name property). This value is used in artifact names, bundle names, and deployment configurations.
# Build from scratch (WARNING: Takes several minutes for complete project)
./judo.sh build
# Build and start
./judo.sh build start
# Stop services
./judo.sh stop
# Check status
./judo.sh status
# Fast iteration mode
./judo.sh reckless
# Clean everything
./judo.sh clean
# View help
./judo.sh --help
Important: A full
./judo.sh buildfor the complete project can take several minutes (5-15+ minutes depending on hardware). When running in automated environments or background processes, ensure appropriate timeouts are configured. Never run multiple concurrent builds as they will conflict.
Critical for AI Agents: The
judo.shscript uses mvnd (Maven Daemon) which requires a stable PTY (pseudo-terminal) environment. When runningjudo.shcommands from automated/background processes:
- Always use
screenortmuxto provide a stable terminal session- Check for availability first - if neither
screennortmuxis installed, terminate the task and notify the user- Running without a session manager will cause
StaleAddressExceptionerrors due to daemon communication failuresExample usage with screen:
# Check if screen or tmux is available command -v screen || command -v tmux || { echo "ERROR: screen or tmux required for judo.sh"; exit 1; } # Start build in detached screen session screen -dmS judo-build bash -c './judo.sh build 2>&1 | tee /tmp/judo-build.log' # Monitor progress tail -f /tmp/judo-build.log # Or check screen output directly screen -r judo-build
./judo.sh build start./judo.sh reckless (fast builds)./judo.sh build -DskipDocker=false./judo.sh stopThis documentation is organized into context-specific guides:
Comprehensive guide to the build system:
Development environment setup and workflow:
Production deployment guide:
Configuration for different environments:
judo-karaf.env filejudo.sh (orchestration)
↓
Maven (build tool)
├→ Model Transformation (application/model/)
├→ Schema Generation (application/schema/)
├→ SDK Generation (application/sdk/)
├→ Backend Compilation (application/app/, interceptors/)
├→ Frontend Generation (application/frontend-react/)
├→ Karaf Assembly (application/karaf-offline/)
└→ Docker Image (application/docker/)
/judo.sh/pom.xml/application/pom.xml/application/karaf-offline/target/assembly//application/docker/target/docker//application/.karaf/data/log/karaf.logWhen services are running locally:
ssh -p 8101 karaf@localhost (password: karaf)Check backend health at: http://localhost:8181/system/health?tags={{ lowerCase model.name \}}
HTML format (default):
http://localhost:8181/system/health?tags={{ lowerCase model.name \}}
JSON format (recommended for automation):
http://localhost:8181/system/health?tags={{ lowerCase model.name \}}&format=json
{
"overallResult": "OK",
"results": [
{
"name": "ModelsCheck",
"status": "OK",
"timeInMs": 0,
"finishedAt": "2025-12-02T20:45:21.339",
"tags": ["{{ lowerCase model.name \}}"],
"messages": [
{
"status": "OK",
"message": "All models are active"
}
]
},
{
"name": "OperationsCheck",
"status": "OK",
"timeInMs": 0,
"finishedAt": "2025-12-02T20:45:21.339",
"tags": ["{{ lowerCase model.name \}}"],
"messages": [
{
"status": "OK",
"message": "All operations are active"
}
]
},
{
"name": "PlatformComponentsCheck",
"status": "OK",
"timeInMs": 10,
"finishedAt": "2025-12-02T20:45:21.349",
"tags": ["{{ lowerCase model.name \}}"],
"messages": [
{
"status": "OK",
"message": "All platform components are active"
}
]
}
]
}
| Status | Description | CSS Class |
|---|---|---|
OK | All checks passed | statusOK (green) |
WARN | Warning condition | statusWARN (yellow) |
TEMPORARILY_UNAVAILABLE | Temporary issue | statusTEMPORARILY_UNAVAILABLE (purple) |
CRITICAL | Critical failure | statusCRITICAL (orange) |
HEALTH_CHECK_ERROR | Check itself failed | statusHEALTH_CHECK_ERROR (red) |
| Parameter | Description |
|---|---|
tags | Comma-separated list of health check tags (e.g., {{ lowerCase model.name \}}) |
names | Comma-separated list of specific health check names |
format | Output format: html, json, jsonp, txt, verbose.txt |
httpStatus | Custom HTTP status mapping (e.g., CRITICAL:503) |
timeout | Timeout in milliseconds for health checks |
forceInstantExecution | If true, bypasses cache and executes checks immediately |
# HTML format (human-readable)
curl "http://localhost:8181/system/health?tags={{ lowerCase model.name \}}"
# JSON format (for scripts/automation)
curl -s "http://localhost:8181/system/health?tags={{ lowerCase model.name \}}&format=json" | jq .
# Check overall status only
curl -s "http://localhost:8181/system/health?tags={{ lowerCase model.name \}}&format=json" | jq -r '.overallResult'