Pipeline tests simplification (#1348)
This commit is contained in:
20
.github/workflows/composites/maven-build-with-dry-run-for-tests/action.yaml
vendored
Normal file
20
.github/workflows/composites/maven-build-with-dry-run-for-tests/action.yaml
vendored
Normal 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
|
||||
|
||||
86
.github/workflows/maven.yaml
vendored
86
.github/workflows/maven.yaml
vendored
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user