[ https://issues.apache.org/jira/browse/UNOMI-887?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Serge Huber reassigned UNOMI-887: --------------------------------- Assignee: Serge Huber > 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 > Assignee: Serge Huber > Priority: Major > 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)