Refine CI-PR to only build modified modules.
This commit is contained in:
54
scripts/build-modified-modules.sh
Executable file
54
scripts/build-modified-modules.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
function itemInModules() {
|
||||
local e
|
||||
for e in ${MODULES}; do
|
||||
if [[ "$e" == "$ITEM" ]]; then
|
||||
echo "1"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "0"
|
||||
}
|
||||
function addItem() {
|
||||
if [ "$MODULES" == "" ]; then
|
||||
echo "$1"
|
||||
else
|
||||
echo "$MODULES $1"
|
||||
fi
|
||||
}
|
||||
MODIFIED="$*"
|
||||
ALL_MODULES=$(find . -name "pom.xml" -type f -exec dirname '{}' \; | sed 's/\.\///' | sort -r)
|
||||
MODULES=
|
||||
for file in $MODIFIED; do
|
||||
FILE=$(realpath $file)
|
||||
echo "$file was changed"
|
||||
for ITEM in $ALL_MODULES; do
|
||||
if [[ "$ITEM" != "." ]] && [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
MVN_MODULES=
|
||||
|
||||
for module in $MODULES; do
|
||||
if [[ "$module" == *"/"* ]]; then
|
||||
if [ "$MVN_MODULES" == "" ]; then
|
||||
MVN_MODULES=$module
|
||||
else
|
||||
MVN_MODULES="$MVN_MODULES,$module"
|
||||
fi
|
||||
else
|
||||
./mvnw install -pl $module
|
||||
fi
|
||||
done
|
||||
if [ "$MVN_MODULES" != "" ]; then
|
||||
echo "Building $MVN_MODULES"
|
||||
./mvnw install -pl "$MVN_MODULES" -amd
|
||||
fi
|
||||
@@ -17,80 +17,20 @@ function addItem() {
|
||||
fi
|
||||
}
|
||||
MODIFIED="$*"
|
||||
FUNCTIONS=$(jq -c '.functions | .[]' matrix.json | sed 's/\"//g')
|
||||
CONSUMERS=$(jq -c '.consumers | .[]' matrix.json | sed 's/\"//g')
|
||||
SUPPLIERS=$(jq -c '.suppliers | .[]' matrix.json | sed 's/\"//g')
|
||||
PROCESSORS=$(jq -c '.processors | .[]' matrix.json | sed 's/\"//g')
|
||||
SINKS=$(jq -c '.sinks | .[]' matrix.json | sed 's/\"//g')
|
||||
SOURCES=$(jq -c '.sources | .[]' matrix.json | sed 's/\"//g')
|
||||
ALL_MODULES=$(find . -name "pom.xml" -type f -exec dirname '{}' \; | sed 's/\.\///' | sort -r)
|
||||
MODULES=
|
||||
for file in $MODIFIED; do
|
||||
FILE=$(realpath $file)
|
||||
echo "$file was changed"
|
||||
for app in $FUNCTIONS; do
|
||||
ITEM="functions/function/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for app in $CONSUMERS; do
|
||||
ITEM="functions/consumer/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for app in $SUPPLIERS; do
|
||||
ITEM="functions/supplier/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for app in $PROCESSORS; do
|
||||
ITEM="applications/processor/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for app in $SINKS; do
|
||||
ITEM="applications/sink/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for app in $SOURCES; do
|
||||
ITEM="applications/source/$app"
|
||||
if [[ "$file" == *"$ITEM"* ]]; then
|
||||
for ITEM in $ALL_MODULES; do
|
||||
if [[ "$ITEM" != "." ]] && [[ "$file" == *"$ITEM"* ]]; then
|
||||
echo "Matched $ITEM"
|
||||
HAS_ITEM=$(itemInModules)
|
||||
if ((HAS_ITEM == 0)); then
|
||||
echo "Add:$ITEM"
|
||||
MODULES=$(addItem "$ITEM")
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
@@ -104,4 +44,3 @@ for module in $MODULES; do
|
||||
echo "\"$module\"" >> modules.json
|
||||
done
|
||||
echo "]" >>modules.json
|
||||
|
||||
|
||||
Reference in New Issue
Block a user