diff --git a/.circleci/concatenate-test-output.sh b/.circleci/concatenate-test-output.sh new file mode 100755 index 00000000..e86efd8e --- /dev/null +++ b/.circleci/concatenate-test-output.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +############################################################################ +## Script to concatenate all .txt files in the surefire-reports directory +## into a single artifact that can be stored in CI. +############################################################################ + +mkdir -p /home/circleci/test-output-artifacts/ + +################################################################### +## Find all module directories that have target/surefire-reports ## +################################################################### +for module_dir in */; do + if [ -d "${module_dir}target/surefire-reports" ]; then + module_name=$(basename "${module_dir%/}") + output_file="/home/circleci/test-output-artifacts/${module_name}-test-output.txt" + + echo "Processing module: ${module_name}" + echo "Output file: ${output_file}" + + ################################################################## + ## Concatenate all .txt files in the surefire-reports directory ## + ################################################################## + if [ -n "$(find "${module_dir}target/surefire-reports" -name "*.txt" -type f)" ]; then + echo "=== Test Output for ${module_name} ===" > "${output_file}" + echo "Generated at: $(date)" >> "${output_file}" + echo "==========================================" >> "${output_file}" + echo "" >> "${output_file}" + + ############################################## + ## Sort files to ensure consistent ordering ## + ############################################## + find "${module_dir}target/surefire-reports" -name "*.txt" -type f | sort | while read -r txt_file; do + echo "--- File: $(basename "${txt_file}") ---" >> "${output_file}" + cat "${txt_file}" >> "${output_file}" + echo "" >> "${output_file}" + echo "--- End of $(basename "${txt_file}") ---" >> "${output_file}" + echo "" >> "${output_file}" + echo "" >> "${output_file}" + echo "" >> "${output_file}" + done + + echo "Concatenated test output for ${module_name} to ${output_file}" + else + echo "No .txt files found in ${module_dir}target/surefire-reports" + fi + fi +done \ No newline at end of file diff --git a/.circleci/config.yml b/.circleci/config.yml index cf61ae84..a50edc3a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,64 +20,29 @@ commands: - run: name: Run Maven Compile command: | - mvn -s .circleci/mvn-settings.xml -T4 --batch-mode compile + mvn -s .circleci/mvn-settings.xml -T4 --no-transfer-progress compile - save_cache: paths: - ~/.m2 key: v1-dependencies-{{ checksum "pom.xml" }} - mvn_test: + mvn_verify: steps: - checkout - restore_cache: keys: - v1-dependencies-{{ checksum "pom.xml" }} - run: - name: Run Maven Test + name: Run Maven Verify command: | - mvn -s .circleci/mvn-settings.xml -T4 --batch-mode test jacoco:report + mvn -s .circleci/mvn-settings.xml -T4 --no-transfer-progress verify - store_artifacts: + name: Store Jacoco reports path: "*/target/site/jacoco/" when: always - run: name: Concatenate test output files - command: | - # Create artifacts directory - mkdir -p /home/circleci/test-output-artifacts/ - - # Find all module directories that have target/surefire-reports - for module_dir in */; do - if [ -d "${module_dir}target/surefire-reports" ]; then - module_name=$(basename "${module_dir%/}") - output_file="/home/circleci/test-output-artifacts/${module_name}-test-output.txt" - - echo "Processing module: ${module_name}" - echo "Output file: ${output_file}" - - # Concatenate all .txt files in the surefire-reports directory - if [ -n "$(find "${module_dir}target/surefire-reports" -name "*.txt" -type f)" ]; then - echo "=== Test Output for ${module_name} ===" > "${output_file}" - echo "Generated at: $(date)" >> "${output_file}" - echo "==========================================" >> "${output_file}" - echo "" >> "${output_file}" - - # Sort files to ensure consistent ordering - find "${module_dir}target/surefire-reports" -name "*.txt" -type f | sort | while read -r txt_file; do - echo "--- File: $(basename "${txt_file}") ---" >> "${output_file}" - cat "${txt_file}" >> "${output_file}" - echo "" >> "${output_file}" - echo "--- End of $(basename "${txt_file}") ---" >> "${output_file}" - echo "" >> "${output_file}" - echo "" >> "${output_file}" - echo "" >> "${output_file}" - done - - echo "Concatenated test output for ${module_name} to ${output_file}" - else - echo "No .txt files found in ${module_dir}target/surefire-reports" - fi - fi - done + command: .circleci/concatenate-test-output.sh when: always - store_artifacts: path: /home/circleci/test-output-artifacts @@ -101,8 +66,8 @@ commands: - run: name: Build and Run ValidateApiVersions command: | - mvn -s .circleci/mvn-settings.xml -T4 --batch-mode install -DskipTests - mvn -s .circleci/mvn-settings.xml -T4 --batch-mode -pl qqq-middleware-javalin package appassembler:assemble -DskipTests + mvn -s .circleci/mvn-settings.xml -T4 --no-transfer-progress install -DskipTests + mvn -s .circleci/mvn-settings.xml -T4 --no-transfer-progress -pl qqq-middleware-javalin package appassembler:assemble -DskipTests qqq-middleware-javalin/target/appassembler/bin/ValidateApiVersions -r $(pwd) mvn_jar_deploy: @@ -118,7 +83,7 @@ commands: - run: name: Run Maven Jar Deploy command: | - mvn -s .circleci/mvn-settings.xml -T4 --batch-mode flatten:flatten jar:jar deploy:deploy + mvn -s .circleci/mvn-settings.xml -T4 --no-transfer-progress flatten:flatten jar:jar deploy:deploy - save_cache: paths: - ~/.m2 @@ -153,7 +118,7 @@ jobs: test: executor: localstack/default steps: - - mvn_test + - mvn_verify api_version_check: executor: localstack/default @@ -164,7 +129,7 @@ jobs: executor: localstack/default steps: - mvn_build - - mvn_test + - mvn_verify - check_middleware_api_versions - mvn_jar_deploy