mirror of https://github.com/apache/flink.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
8.0 KiB
Bash
208 lines
8.0 KiB
Bash
#!/usr/bin/env bash
|
|
################################################################################
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
################################################################################
|
|
|
|
echo $M2_HOME
|
|
echo $PATH
|
|
echo $MAVEN_OPTS
|
|
|
|
mvn -version
|
|
|
|
echo "Commit: $(git rev-parse HEAD)"
|
|
|
|
CACHE_DIR="$HOME/flink_cache"
|
|
CACHE_BUILD_DIR="$CACHE_DIR/$TRAVIS_BUILD_NUMBER"
|
|
CACHE_FLINK_DIR="$CACHE_BUILD_DIR/flink"
|
|
|
|
echo "Flink cache location: ${CACHE_FLINK_DIR}"
|
|
|
|
HERE="`dirname \"$0\"`" # relative
|
|
HERE="`( cd \"$HERE\" && pwd )`" # absolutized and normalized
|
|
if [ -z "$HERE" ] ; then
|
|
# error; for some reason, the path is not accessible
|
|
# to the script (e.g. permissions re-evaled after suid)
|
|
exit 1 # fail
|
|
fi
|
|
|
|
source "${HERE}/travis/fold.sh"
|
|
source "${HERE}/travis/stage.sh"
|
|
source "${HERE}/travis/shade.sh"
|
|
|
|
print_system_info() {
|
|
FOLD_ESCAPE="\x0d\x1b"
|
|
COLOR_ON="\x5b\x30\x4b\x1b\x5b\x33\x33\x3b\x31\x6d"
|
|
COLOR_OFF="\x1b\x5b\x30\x6d"
|
|
|
|
start_fold "cpu_info" "CPU information"
|
|
lscpu
|
|
end_fold "cpu_info"
|
|
|
|
start_fold "mem_info" "Memory information"
|
|
cat /proc/meminfo
|
|
end_fold "mem_info"
|
|
|
|
start_fold "disk_info" "Disk information"
|
|
df -hH
|
|
end_fold "disk_info"
|
|
|
|
start_fold "cache_info" "Cache information"
|
|
echo "Maven: $(du -s --si $HOME/.m2)"
|
|
echo "Flink: $(du -s --si $HOME/flink_cache)"
|
|
echo "Maven (binaries): $(du -s --si $HOME/maven_cache)"
|
|
echo "gems: $(du -s --si $HOME/gem_cache)"
|
|
end_fold "cache_info"
|
|
}
|
|
|
|
print_system_info
|
|
|
|
function deleteOldCaches() {
|
|
while read CACHE_DIR; do
|
|
local old_number="${CACHE_DIR##*/}"
|
|
if [ "$old_number" -lt "$TRAVIS_BUILD_NUMBER" ]; then
|
|
echo "Deleting old cache $CACHE_DIR"
|
|
rm -rf "$CACHE_DIR"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# delete leftover caches from previous builds; except the most recent
|
|
find "$CACHE_DIR" -mindepth 1 -maxdepth 1 | grep -v "$TRAVIS_BUILD_NUMBER" | sort -Vr | tail -n +2 | deleteOldCaches
|
|
|
|
STAGE=$1
|
|
echo "Current stage: \"$STAGE\""
|
|
|
|
EXIT_CODE=0
|
|
|
|
# Run actual compile&test steps
|
|
if [ $STAGE == "$STAGE_COMPILE" ]; then
|
|
MVN="mvn clean install -nsu -Dflink.convergence.phase=install -Pcheck-convergence -Dflink.forkCount=2 -Dflink.forkCountTestPackage=2 -Dmaven.javadoc.skip=true -B -DskipTests $PROFILE -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.wagon.http.pool=false"
|
|
$MVN
|
|
EXIT_CODE=$?
|
|
|
|
if [ $EXIT_CODE == 0 ]; then
|
|
printf "\n\n==============================================================================\n"
|
|
printf "Checking scala suffixes\n"
|
|
printf "==============================================================================\n"
|
|
|
|
./tools/verify_scala_suffixes.sh "${PROFILE}"
|
|
EXIT_CODE=$?
|
|
else
|
|
printf "\n==============================================================================\n"
|
|
printf "Previous build failure detected, skipping scala-suffixes check.\n"
|
|
printf "==============================================================================\n"
|
|
fi
|
|
|
|
if [ $EXIT_CODE == 0 ]; then
|
|
check_shaded_artifacts
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
check_shaded_artifacts_s3_fs hadoop
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
check_shaded_artifacts_s3_fs presto
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
check_shaded_artifacts_connector_elasticsearch 2
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
check_shaded_artifacts_connector_elasticsearch 5
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
check_shaded_artifacts_connector_elasticsearch 6
|
|
EXIT_CODE=$(($EXIT_CODE+$?))
|
|
else
|
|
echo "=============================================================================="
|
|
echo "Previous build failure detected, skipping shaded dependency check."
|
|
echo "=============================================================================="
|
|
fi
|
|
|
|
if [ $EXIT_CODE == 0 ]; then
|
|
echo "Creating cache build directory $CACHE_FLINK_DIR"
|
|
mkdir -p "$CACHE_FLINK_DIR"
|
|
|
|
cp -r . "$CACHE_FLINK_DIR"
|
|
|
|
function minimizeCachedFiles() {
|
|
# reduces the size of the cached directory to speed up
|
|
# the packing&upload / download&unpacking process
|
|
# by removing files not required for subsequent stages
|
|
|
|
# jars are re-built in subsequent stages, so no need to cache them (cannot be avoided)
|
|
find "$CACHE_FLINK_DIR" -maxdepth 8 -type f -name '*.jar' \
|
|
! -path "$CACHE_FLINK_DIR/flink-formats/flink-csv/target/flink-csv*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-formats/flink-json/target/flink-json*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-formats/flink-avro/target/flink-avro*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-runtime/target/flink-runtime*tests.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-streaming-java/target/flink-streaming-java*tests.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-dist/target/flink-*-bin/flink-*/lib/flink-dist*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-dist/target/flink-*-bin/flink-*/lib/flink-table_*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-dist/target/flink-*-bin/flink-*/lib/flink-table-blink*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-dist/target/flink-*-bin/flink-*/opt/flink-python*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-connectors/flink-connector-elasticsearch-base/target/flink-*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-connectors/flink-connector-kafka-base/target/flink-*.jar" \
|
|
! -path "$CACHE_FLINK_DIR/flink-table/flink-table-planner/target/flink-table-planner*tests.jar" | xargs rm -rf
|
|
|
|
# .git directory
|
|
# not deleting this can cause build stability issues
|
|
# merging the cached version sometimes fails
|
|
rm -rf "$CACHE_FLINK_DIR/.git"
|
|
}
|
|
|
|
start_fold "minimize_cache" "Minimizing cache"
|
|
travis_time_start
|
|
minimizeCachedFiles
|
|
travis_time_finish
|
|
end_fold "minimize_cache"
|
|
else
|
|
echo "=============================================================================="
|
|
echo "Previous build failure detected, skipping cache setup."
|
|
echo "=============================================================================="
|
|
fi
|
|
elif [ $STAGE != "$STAGE_CLEANUP" ]; then
|
|
if ! [ -e $CACHE_FLINK_DIR ]; then
|
|
echo "Cached flink dir $CACHE_FLINK_DIR does not exist. Exiting build."
|
|
exit 1
|
|
fi
|
|
# merged compiled flink into local clone
|
|
# this prevents the cache from being re-uploaded
|
|
start_fold "merge_cache" "Merging cache"
|
|
travis_time_start
|
|
cp -RT "$CACHE_FLINK_DIR" "."
|
|
travis_time_finish
|
|
end_fold "merge_cache"
|
|
|
|
start_fold "adjust_timestamps" "Adjusting timestamps"
|
|
travis_time_start
|
|
# adjust timestamps to prevent recompilation
|
|
find . -type f -name '*.java' | xargs touch
|
|
find . -type f -name '*.scala' | xargs touch
|
|
# wait a bit for better odds of different timestamps
|
|
sleep 5
|
|
find . -type f -name '*.class' | xargs touch
|
|
find . -type f -name '*.timestamp' | xargs touch
|
|
travis_time_finish
|
|
end_fold "adjust_timestamps"
|
|
|
|
TEST="$STAGE" "./tools/travis_watchdog.sh" 300
|
|
EXIT_CODE=$?
|
|
elif [ $STAGE == "$STAGE_CLEANUP" ]; then
|
|
echo "Cleaning up $CACHE_BUILD_DIR"
|
|
rm -rf "$CACHE_BUILD_DIR"
|
|
else
|
|
echo "Invalid Stage specified: $STAGE"
|
|
exit 1
|
|
fi
|
|
|
|
# Exit code for Travis build success/failure
|
|
exit $EXIT_CODE
|