Pipeline tests simplification (#1348)

This commit is contained in:
erabii
2023-05-22 16:21:35 +03:00
committed by GitHub
parent fb49bb2b92
commit e6e6cb6346
22 changed files with 158 additions and 109 deletions

View File

@@ -0,0 +1,20 @@
name: maven-build-with-dry-run-for-tests
description: maven-build-with-dry-run-for-tests
runs:
using: "composite"
steps:
- name: maven-build-with-dry-run-for-tests
shell: bash
run: |
# find all the tests that are supposed to be run, but don't actually run them.
# this is achieved via: 'spring.cloud.k8s.skip.tests=true' in DisabledTestsCondition
./mvnw clean install -Dskip.build.image=true -Dspring.cloud.k8s.skip.tests=true \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=error \
-T 1C > /tmp/tests.txt
- name: upload test
uses: actions/upload-artifact@v3
with:
name: tests.txt
path: /tmp/tests.txt

View File

@@ -34,8 +34,8 @@ jobs:
- name: build fabric8 istio
uses: ./.github/workflows/composites/fabric8-istio
- name: build with skip tests and skip images
run: ./mvnw -T 1C -s .settings.xml clean install -U -DskipTests -Dskip.build.image=true
- name: maven build with dry-run for tests
uses: ./.github/workflows/composites/maven-build-with-dry-run-for-tests
- name: build controllers project
uses: ./.github/workflows/composites/build-controllers-project
@@ -136,86 +136,23 @@ jobs:
uses: ./.github/workflows/composites/load-docker-images
if: env.BASE_BRANCH != '2.1.x'
- name: download tests
uses: actions/download-artifact@v3
with:
name: tests.txt
path: /tmp
- name: run tests
env:
CURRENT_INDEX: ${{ matrix.current_index }}
NUMBER_OF_JOBS: ${{ matrix.number_of_jobs }}
run: |
# - find all tests
# - exclude Fabric8IstionIT
# - only take classes that have @Test inside them
# - ignore the ones that have 'abstract class'. we do this because otherwise we would pass
# to -DtestsToRun an abstract class, and it will not run anything.
# - drop the "begining" xxx/src/test/java
# - replace / with .
# - drop last ".java"
# - replace newline with space
# - replace '\n' with ' '
# exclude all integration tests for branch '2.1.x' via 'grep -v '.*IT.java''
echo "base_branch : $BASE_BRANCH"
declare -a PLAIN_TEST_CLASSNAMES
baseBranch=$BASE_BRANCH
if [[ $baseBranch == "2.1.x" ]]; then
PLAIN_TEST_CLASSNAMES=($(find . -name '*.java' \
| grep 'src/test/java' \
| grep -v 'Fabric8IstioIT' \
| grep -v '.*IT.java' \
| xargs grep -l '@Test' \
| xargs grep -L 'abstract class' \
| sed 's/.*src.test.java.//g' \
| sed 's@/@.@g' \
| sed 's/.\{5\}$//' \
| tr '\n' ' '))
else
PLAIN_TEST_CLASSNAMES=($(find . -name '*.java' \
| grep 'src/test/java' \
| grep -v 'Fabric8IstioIT' \
| xargs grep -l '@Test' \
| xargs grep -L 'abstract class' \
| sed 's/.*src.test.java.//g' \
| sed 's@/@.@g' \
| sed 's/.\{5\}$//' \
| tr '\n' ' '))
fi
# classes that have @Test and are abstract, for example: "LabeledSecretWithPrefixTests"
# - exclude Fabric8IstionIT
# - only take classes that have @Test inside them
# - only take classes that are abstract
# - drop everything up until the last "/"
# - drop ".java"
ABSTRACT_TEST_CLASSNAMES_COMMAND="find . -name '*.java' \
| grep 'src/test/java' \
| grep -v 'Fabric8IstioIT' \
| xargs grep -l '@Test' \
| xargs grep -l 'abstract class' \
| sed 's/.*\///g' \
| sed 's/.java//g'"
# find classes that extend abstract test classes
DERIVED_FROM_ABSTRACT_CLASSES_COMMAND="find . -name '*.java' \
| grep 'src/test/java' \
| grep -v 'Fabric8IstioIT' \
| xargs grep -l 'extends replace_me ' \
| sed 's/.*src.test.java.//g' \
| sed 's@/@.@g' \
| sed 's/.\{5\}$//' \
| tr '\n' ' '"
while read class_name; do
replaced=$(echo ${DERIVED_FROM_ABSTRACT_CLASSES_COMMAND/replace_me/"$class_name"})
result=($(eval $replaced))
PLAIN_TEST_CLASSNAMES+=(${result[@]})
done < <(eval $ABSTRACT_TEST_CLASSNAMES_COMMAND)
PLAIN_TEST_CLASSNAMES=($(cat /tmp/tests.txt | grep 'spring.cloud.k8s.test.to.run' | awk '{print $3}'))
IFS=$'\n'
SORTED_TEST_CLASSNAMES=( $(sort <<< "${PLAIN_TEST_CLASSNAMES[*]} | uniq -u") )
SORTED_TEST_CLASSNAMES=( $(sort <<< "${PLAIN_TEST_CLASSNAMES[*]}") )
unset IFS
number_of_tests=${#SORTED_TEST_CLASSNAMES[@]}
number_of_jobs=${NUMBER_OF_JOBS}
current_index=${CURRENT_INDEX}
@@ -299,4 +236,3 @@ jobs:
-Dmaven.wagon.http.retryHandler.count=3 \
-Dskip.build.image=true
fi