diff --git a/.ci-builds/.azure-exhaustive-tests.yml b/.ci-builds/.azure-exhaustive-tests.yml index b89e94c4cc4..48b9d7ad23c 100644 --- a/.ci-builds/.azure-exhaustive-tests.yml +++ b/.ci-builds/.azure-exhaustive-tests.yml @@ -27,6 +27,9 @@ trigger: - KEYS - README.md +variables: + MAVEN_ARGS: '--show-version --no-transfer-progress' + jobs: #------------------------------------------------------------------------- # Note: The exhaustive tests can take more than 1 hour to complete. @@ -41,12 +44,12 @@ jobs: lfs: true fetchDepth: 10 - script: | - echo "Building ICU4J" && cd icu4j && ant init && ant exhaustiveCheck + echo "Building ICU4J" && cd icu4j && mvn install -DICU.exhaustive=10 displayName: 'Build and Exhaustive Tests' env: BUILD: ICU4J - script: | - [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;` + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;` condition: failed() # only run if the build fails. displayName: 'List failures (if any)' timeoutInMinutes: 2 diff --git a/.ci-builds/.azure-pipelines.yml b/.ci-builds/.azure-pipelines.yml index 1903466915f..2ff19b4453d 100644 --- a/.ci-builds/.azure-pipelines.yml +++ b/.ci-builds/.azure-pipelines.yml @@ -1,5 +1,8 @@ # Azure Pipelines (VSTS) configuration for CI builds for ICU. +variables: + MAVEN_ARGS: '--show-version --no-transfer-progress' + jobs: #------------------------------------------------------------------------- - job: ICU4J_OpenJDK_Ubuntu_2204 @@ -13,13 +16,13 @@ jobs: lfs: true fetchDepth: 10 - script: | - echo "Building ICU4J" && cd icu4j && ant init && ant check && ant localespiCheck + echo "Building ICU4J" && cd icu4j && mvn install displayName: 'Build and Test' env: BUILD: ICU4J # exit with a non-zero status in order to make this step show as a red X in the UI. - script: | - [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;` && exit 1 + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;` && exit 1 condition: failed() # only run if the build fails. displayName: 'List failures (if any)' #------------------------------------------------------------------------- diff --git a/.github/workflows/icu_ci.yml b/.github/workflows/icu_ci.yml index c47be76808c..b08b3610391 100644 --- a/.github/workflows/icu_ci.yml +++ b/.github/workflows/icu_ci.yml @@ -12,6 +12,12 @@ on: - 'maint/maint*' pull_request: branches: '**' + workflow_dispatch: + # To trigger the Env Test workflow manually, follow the instructions in + # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow + +env: + MAVEN_ARGS: '--show-version --no-transfer-progress' permissions: contents: read @@ -33,8 +39,8 @@ jobs: # Regex note: (?! ... ) is a negative lookahead. Succeed if the pattern is not present. set +o pipefail && make doc 2>&1 | tee doxygen.log && ( ! grep -P 'warning:(?! .* file .?Doxyfile)' doxygen.log ) - # ICU4J build and unit test using Ant - icu4j-ant-build-and-test: + # ICU4J build and unit test using Maven + icu4j-mvn-build-and-test: strategy: fail-fast: false matrix: @@ -54,12 +60,10 @@ jobs: - name: ICU4J run: | cd icu4j; - ant init; - ant check; - ant localespiCheck + mvn install - name: List failures (if any) run: | - [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;`; + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;`; if: ${{ failure() }} # ICU4J build and unit tests using Maven @@ -92,7 +96,7 @@ jobs: cache: maven - name: Run Maven test run: | - cd icu4j/maven-build; + cd icu4j; mvn --batch-mode test # Run `verify` to ensure that `package` (creating .jar files) and `integration-test` (special setup for localespi tests) work @@ -120,7 +124,7 @@ jobs: # integration tests, if any (`integration-test`) - name: Run Maven verify run: | - cd icu4j/maven-build; + cd icu4j; mvn --batch-mode verify # ICU4J build and unit test under lstm @@ -147,16 +151,15 @@ jobs: - name: ICU4J run: | cd icu4j; - ant init; - ant check; - ant localespiCheck + mvn install - name: List failures (if any) run: | - [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;`; + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;`; if: ${{ failure() }} # ICU4J build and unit test under adaboost adaboost-icu4j-build-and-test: + if: false # Temporary disable, until we disable the .jar creation from C and distribute the individual files runs-on: ubuntu-latest steps: - name: Checkout and setup @@ -179,12 +182,10 @@ jobs: - name: ICU4J run: | cd icu4j; - ant init; - ant -Dcom.ibm.icu.impl.breakiter.useMLPhraseBreaking=true check; - ant localespiCheck + mvn -Dcom.ibm.icu.impl.breakiter.useMLPhraseBreaking=true install - name: List failures (if any) run: | - [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;`; + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;`; if: ${{ failure() }} # gcc debug build. diff --git a/.github/workflows/icu_merge_ci.yml b/.github/workflows/icu_merge_ci.yml index 9e3d963af61..7e3c4146a8e 100644 --- a/.github/workflows/icu_merge_ci.yml +++ b/.github/workflows/icu_merge_ci.yml @@ -10,6 +10,12 @@ on: branches: - main - 'maint/maint*' + workflow_dispatch: + # To trigger the Env Test workflow manually, follow the instructions in + # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow + +env: + MAVEN_ARGS: '--show-version --no-transfer-progress' permissions: contents: read @@ -38,8 +44,8 @@ jobs: mkdir /tmp/icu4j_data_test; cp -P data/out/tmp/icudt*l* /tmp/icu4j_data_test/ cd ../../icu4j; - ant clean; - ant -Dicu4c.data.path=/tmp/icu4j_data_test check; + mvn clean; + mvn -Dicu4c.data.path=/tmp/icu4j_data_test install # Compile libraries used by all ICU4C performance tests. icu4c-store-perf-libs: @@ -294,12 +300,11 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2; git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2; cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; git status cd perf-tests; mkdir -p perf/results/j_unicodesetperf/${{ matrix.perf }}; - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.UnicodeSetPerf ${{ matrix.perf }} -a -t 2 -p 4 [:Lt:] | tee perf/results/j_unicodesetperf/${{ matrix.perf }}/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/ com.ibm.icu.dev.test.perf.UnicodeSetPerf ${{ matrix.perf }} -a -t 2 -p 4 [:Lt:] | tee perf/results/j_unicodesetperf/${{ matrix.perf }}/output.txt - name: Store performance test results uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12 @@ -348,11 +353,10 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2; git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2; cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; cd perf-tests; mkdir -p perf/results/j_ucharacterperf; - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.UCharacterPerf -a -t 2 -p 4 0 ffff | tee perf/results/j_ucharacterperf/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/ com.ibm.icu.dev.test.perf.UCharacterPerf -a -t 2 -p 4 0 ffff | tee perf/results/j_ucharacterperf/output.txt - name: Store performance test results uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12 @@ -404,15 +408,14 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2; git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2; cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; cd perf-tests; mkdir -p perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}; # Delay execution by random number of seconds. Spreading execution of multiple # tests over 180 secs. minimizes the possibility of push conflicts when storing # tests results in the data branch. sleep $(($RANDOM % 180)); - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.DecimalFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} "#,###.##" "1.234,56" -r 1 | tee perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/ com.ibm.icu.dev.test.perf.DecimalFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} "#,###.##" "1.234,56" -r 1 | tee perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}/output.txt - name: Store performance test results uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12 @@ -467,15 +470,14 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2; git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2; cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; cd perf-tests; mkdir -p perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}; # Delay execution by random number of seconds. Spreading execution of multiple # tests over 180 secs. minimizes the possibility of push conflicts when storing # tests results in the data branch. sleep $(($RANDOM % 180)); - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.NormalizerPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 ${{ matrix.mode }} | tee perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/ com.ibm.icu.dev.test.perf.NormalizerPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 ${{ matrix.mode }} | tee perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt cat perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt - name: Store performance test results @@ -598,15 +600,14 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2; git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2; cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; cd perf-tests; mkdir -p perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}; # Delay execution by random number of seconds. Spreading execution of multiple # tests over 180 secs. minimizes the possibility of push conflicts when storing # tests results in the data branch. sleep $(($RANDOM % 180)); - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar:../icu4j-charset.jar com.ibm.icu.dev.test.perf.ConverterPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 -T ${{ matrix.test_enc }} | tee perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/:../../icu4j/main/charset/target/ com.ibm.icu.dev.test.perf.ConverterPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 -T ${{ matrix.test_enc }} | tee perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}/output.txt - name: Store performance test results uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12 @@ -676,15 +677,14 @@ jobs: git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2 git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2 cd icu4j; - ant; - ant perf-tests; + mvn install -DskipITs -DskipTests; cd perf-tests; mkdir -p perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}; # Delay execution by random number of seconds. Spreading execution of multiple # tests over 180 secs. minimizes the possibility of push conflicts when storing # tests results in the data branch. sleep $(($RANDOM % 180)); - java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.DateFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} ${{ env.PARM }} -r 1 | tee perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}/output.txt + java -cp ../tools/misc/target/:../../icu4j/main/icu4j/target/ com.ibm.icu.dev.test.perf.DateFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} ${{ env.PARM }} -r 1 | tee perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}/output.txt - name: Store performance test results uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12 diff --git a/.github/workflows/maven.yaml b/.github/workflows/maven.yaml index f6eb58e201c..716f3f0fe8b 100644 --- a/.github/workflows/maven.yaml +++ b/.github/workflows/maven.yaml @@ -2,6 +2,12 @@ name: Publish icu4j.jar/utilities.jar to GH Maven on: release: types: [created] + workflow_dispatch: + # To trigger the Env Test workflow manually, follow the instructions in + # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow + +env: + MAVEN_ARGS: '--show-version --no-transfer-progress' permissions: contents: read