Serge Huber created UNOMI-887: --------------------------------- Summary: Introduce enhanced build.sh script with improved developer experience Key: UNOMI-887 URL: https://issues.apache.org/jira/browse/UNOMI-887 Project: Apache Unomi Issue Type: Sub-task Components: unomi(-core) Affects Versions: unomi-3.0.0 Reporter: Serge Huber Fix For: unomi-3.0.0
h3. Overview This ticket introduces a new enhanced {noformat} build.sh{noformat} script for Apache Unomi 3.x that significantly improves the developer experience by providing a robust, user-friendly build system with comprehensive error handling, colorized output, and multiple build configuration options. h3. Features The script includes the following key features: h4. Comprehensive Error Handling Detailed error messages with line numbers and function traces Trap mechanism to catch failures during build process Visually distinct error output h4. User-Friendly Output Colorized terminal output (automatically disabled if colors not supported) Progress tracking for build steps Unicode symbols for status indicators (with ASCII fallbacks) Section headers for better visual organization h4. System Requirements Validation Checks for required tools (Java, Maven, GraphViz, etc.) Verifies minimum versions of required dependencies Validates system resources (memory, disk space) Confirms port availability for debug sessions h4. Build Configuration Options {panel:title=Command Line Options} {noformat} --skip-tests{noformat} : Skip all tests {noformat} --integration-tests{noformat} : Run integration tests {noformat} --deploy{noformat} : Deploy after build {noformat} --debug{noformat} : Run Karaf in debug mode {noformat} --debug-port{noformat} : Set debug port (default: 5005) {noformat} --debug-suspend{noformat} : Suspend JVM until debugger connects {noformat} --no-maven-cache{noformat} : Disable Maven build cache {noformat} --purge-maven-cache{noformat} : Purge local Maven cache before building {noformat} --karaf-home{noformat} : Set Karaf home directory for deployment {noformat} --use-opensearch{noformat} : Use OpenSearch instead of ElasticSearch {noformat} --no-karaf{noformat} : Build without starting Karaf {noformat} --auto-start{noformat} : Auto-start with specified search engine {noformat} --single-test{noformat} : Run a single integration test {noformat} --it-debug{noformat} : Enable integration test debug mode {noformat} --it-debug-port{noformat} : Set integration test debug port {noformat} --it-debug-suspend{noformat} : Suspend integration test until debugger connects {noformat} -X, --maven-debug{noformat} : Enable Maven debug output {noformat} -o, --offline{noformat} : Run Maven in offline mode {panel} h4. Environment Integration Support for Darwin/macOS and Linux environments Detection of Apple Silicon (M1/M2) for appropriate Java recommendations Adherence to NO_COLOR standard [https://no-color.org/] Terminal capability detection h3. Benefits Improved Developer Experience: Clear, informative output and helpful error messages Time Savings: Reduced troubleshooting time for build issues Consistency: Standardized build process across development environments Flexibility: Multiple configuration options for different development needs Quality Assurance: Automatic validation of environment prerequisites h3. Testing Done Verified all command line options function as expected Confirmed error handling works properly for various failure scenarios Validated color output displays correctly on supported terminals Tested deployments to existing Karaf instances h3. Documentation The script includes detailed help text ( {noformat} --help{noformat} ) with explanations of all options and example usages. h2. How to Test Clone the unomi-3 branch Run {noformat} ./build.sh --help{noformat} to see available options Test basic build with {noformat} ./build.sh{noformat} Test with various options like {noformat} ./build.sh --integration-tests --use-opensearch{noformat} Verify the error handling by intentionally causing failures Test debug mode with {noformat} ./build.sh --debug{noformat} h2. Additional Notes This script serves as the foundation for the Unomi 3.x build system and will be maintained alongside the codebase to ensure compatibility with future changes. -- This message was sent by Atlassian Jira (v8.20.10#820010)