96 lines
2.7 KiB
Bash
Executable File
96 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# This script is used as a single command to run the x-pack-kibana tests.
|
|
#
|
|
# It will also attempt to install the appropriate version of node.js
|
|
# for the Kibana plugin tests using nvm. Set a custom nvm directory using the
|
|
# `NVM_DIR` environment variable.
|
|
#
|
|
|
|
# Turn on semi-strict mode
|
|
set -e
|
|
set -o pipefail
|
|
|
|
SCRIPT="$0"
|
|
|
|
# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path.
|
|
while [ -h "$SCRIPT" ] ; do
|
|
ls=$(ls -ld "$SCRIPT")
|
|
# Drop everything prior to ->
|
|
link=$(expr "$ls" : '.*-> \(.*\)$')
|
|
if expr "$link" : '/.*' > /dev/null; then
|
|
SCRIPT="$link"
|
|
else
|
|
SCRIPT=$(dirname "$SCRIPT")/"$link"
|
|
fi
|
|
done
|
|
|
|
# determine base directory
|
|
BASE_DIR=$(dirname "$SCRIPT")/..
|
|
|
|
# make BASE_DIR absolute
|
|
BASE_DIR=$(cd "$BASE_DIR"; pwd)
|
|
|
|
PARENT_DIR=$(cd "$BASE_DIR"/..; pwd)
|
|
|
|
# go to the parent directory
|
|
cd $PARENT_DIR
|
|
|
|
if [ -z ${USE_EXISTING_ES:+x} ]; then
|
|
if [ -d "./elasticsearch" ]; then
|
|
echo "I expected a clean workspace but an 'elasticsearch' sibling directory already exists in [$PARENT_DIR]!"
|
|
echo
|
|
echo "Either define 'USE_EXISTING_ES' or remove the existing 'elasticsearch' sibling."
|
|
exit 1
|
|
fi
|
|
BRANCH=${PR_SOURCE_BRANCH:-${GIT_BRANCH#*/}} # GIT_BRANCH starts with the repo, i.e., origin/master
|
|
BRANCH=${BRANCH:-master} # fall back to CI branch if not testing a PR
|
|
echo "Checking if branch '$BRANCH' has elasticsearch sibling..."
|
|
if [[ -z "$(git ls-remote --heads https://github.com/elastic/elasticsearch.git $BRANCH)" ]]; then
|
|
echo "No sibling branch, using PR target branch"
|
|
BRANCH=$PR_TARGET_BRANCH
|
|
fi
|
|
echo "Checking out Elasticsearch '$BRANCH' branch..."
|
|
git clone -b $BRANCH https://github.com/elastic/elasticsearch.git --depth=1
|
|
printf "Checked out Elasticsearch revision: %s\n" "$(git -C elasticsearch rev-parse HEAD)"
|
|
else
|
|
if [ -d "./elasticsearch" ]; then
|
|
echo "Using existing 'elasticsearch' checkout"
|
|
else
|
|
echo "You have defined 'USE_EXISTING_ES' but no existing Elasticsearch directory exists!"
|
|
exit 2
|
|
fi
|
|
fi
|
|
|
|
# back to base directory
|
|
cd "$BASE_DIR"
|
|
|
|
# install the correct node.js version
|
|
if [ -z ${NVM_DIR:+x} ]; then
|
|
export NVM_DIR="/var/lib/jenkins/.nvm";
|
|
fi
|
|
|
|
NVM_SCRIPT="$NVM_DIR/nvm.sh"
|
|
if [ -s "$NVM_SCRIPT" ]; then
|
|
. "$NVM_SCRIPT" # load nvm
|
|
else
|
|
echo "Unable to find the nvm script at \"$NVM_SCRIPT\""
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing node.js version $(cat .node-version)..."
|
|
nvm install "$(cat .node-version)"
|
|
|
|
echo "Running x-pack-kibana tests..."
|
|
echo "Running in $PWD"
|
|
|
|
# output the commands
|
|
set -xuf
|
|
|
|
# clean
|
|
gradle --stacktrace clean
|
|
|
|
# Actually run the tests
|
|
gradle check
|
|
|
|
# ~*~ shell-script-mode ~*~
|