Skip to content

Instantly share code, notes, and snippets.

@busbey
Created May 10, 2019 16:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save busbey/b5c3cf28530681ec1ebe7b325e5073bd to your computer and use it in GitHub Desktop.
Save busbey/b5c3cf28530681ec1ebe7b325e5073bd to your computer and use it in GitHub Desktop.
#!/bin/bash -e
if [[ "true" = "${DEBUG}" ]]; then
set -x
printenv
fi
##To set jenkins Environment Variables:
export TOOLS_HOME=/home/jenkins/tools
export FINDBUGS_HOME=${TOOLS_HOME}/findbugs/latest
export CLOVER_HOME=${TOOLS_HOME}/clover/latest
export MAVEN_HOME=/home/jenkins/tools/maven/apache-maven-3.5.0
export PATH=$PATH:${MAVEN_HOME}/bin:
YETUS_RELEASE=0.9.0
COMPONENT=${WORKSPACE}/component
TEST_FRAMEWORK=${WORKSPACE}/test_framework
PATCHPROCESS=${WORKSPACE}/patchprocess
if [[ -d ${PATCHPROCESS} ]]; then
echo "[WARN] patch process already existed '${PATCHPROCESS}'"
rm -rf "${PATCHPROCESS}"
fi
mkdir -p "${PATCHPROCESS}"
# First time we call this it's from jenkins, so break it on spaces
YETUS_ARGS=(${YETUS_ARGS} --jenkins)
### Download Yetus
if [ ! -d "${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}" ]; then
mkdir -p "${TEST_FRAMEWORK}"
cd "${TEST_FRAMEWORK}"
# clear out any cached 'use a prerelease' versions
rm -rf apache-yetus-*
mkdir -p "${TEST_FRAMEWORK}/.gpg"
chmod -R 700 "${TEST_FRAMEWORK}/.gpg"
curl -L --fail -o "${TEST_FRAMEWORK}/KEYS_YETUS" https://dist.apache.org/repos/dist/release/yetus/KEYS
gpg --homedir "${TEST_FRAMEWORK}/.gpg" --import "${TEST_FRAMEWORK}/KEYS_YETUS"
## Release
curl -L --fail -O "https://dist.apache.org/repos/dist/release/yetus/${YETUS_RELEASE}/apache-yetus-${YETUS_RELEASE}-bin.tar.gz"
curl -L --fail -O "https://dist.apache.org/repos/dist/release/yetus/${YETUS_RELEASE}/apache-yetus-${YETUS_RELEASE}-bin.tar.gz.asc"
gpg --homedir "${TEST_FRAMEWORK}/.gpg" --verify "apache-yetus-${YETUS_RELEASE}-bin.tar.gz.asc"
tar xzpf "apache-yetus-${YETUS_RELEASE}-bin.tar.gz"
fi
TESTPATCHBIN=${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}/bin/test-patch
TESTPATCHLIB=${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}/lib/precommit
if [[ "true" = "${DEBUG}" ]]; then
# DEBUG print the test framework
ls -l "${TESTPATCHBIN}"
ls -la "${TESTPATCHLIB}/test-patch.d/"
# DEBUG print the local customization
if [ -d "${COMPONENT}/dev-support/test-patch.d" ]; then
ls -la "${COMPONENT}/dev-support/test-patch.d/"
fi
YETUS_ARGS=(--debug ${YETUS_ARGS[@]})
fi
if [ ! -x "${TESTPATCHBIN}" ] && [ -n "${TEST_FRAMEWORK}" ] && [ -d "${TEST_FRAMEWORK}" ]; then
echo "Something is amiss with the test framework; removing it. please re-run."
rm -rf "${TEST_FRAMEWORK}"
exit 1
fi
cd "${WORKSPACE}"
#
# Yetus *always* builds with JAVA_HOME, so no need to list it.
#
# non-docker-mode JDK:
# --findbugs-home=/home/jenkins/tools/findbugs/latest \
# docker-mode: (openjdk 7 added for free)
# --findbugs-home=/usr \
# --docker \
# --multijdkdirs="/usr/lib/jvm/java-8-openjdk-amd64" \
if [[ "true" = "${RUN_IN_DOCKER}" ]]; then
YETUS_ARGS=( --docker --multijdkdirs="/usr/lib/jvm/java-8-openjdk-amd64" --findbugs-home=/usr ${YETUS_ARGS[@]})
if [ -r "${COMPONENT}/dev-support/Dockerfile" ]; then
YETUS_ARGS=(--dockerfile="${COMPONENT}/dev-support/Dockerfile" ${YETUS_ARGS[@]})
fi
else
YETUS_ARGS=(--findbugs-home=/home/jenkins/tools/findbugs/latest ${YETUS_ARGS[@]})
fi
if [ -d "${COMPONENT}/dev-support/test-patch.d" ]; then
YETUS_ARGS=("--user-plugins=${COMPONENT}/dev-support/test-patch.d" ${YETUS_ARGS[@]})
fi
if [ -r "${COMPONENT}/dev-support/hbase-personality.sh" ] ; then
YETUS_ARGS=("--personality=${COMPONENT}/dev-support/hbase-personality.sh" ${YETUS_ARGS[@]})
fi
YETUS_ARGS=("--html-report-file=${PATCHPROCESS}/console-report.html" "${YETUS_ARGS[@]}")
/bin/bash "${TESTPATCHBIN}" \
"${YETUS_ARGS[@]}" \
--patch-dir="${PATCHPROCESS}" \
--basedir="${COMPONENT}" \
--mvn-custom-repos \
--github-repo=apache/hbase-connectors \
--plugins='all' \
GH:"${ghprbPullId}"
find "${COMPONENT}" -name target -exec chmod -R u+w {} \;
#!/bin/bash -e
if [[ "true" = "${DEBUG}" ]]; then
set -x
printenv
fi
##To set jenkins Environment Variables:
export TOOLS_HOME=/home/jenkins/tools
export FINDBUGS_HOME=${TOOLS_HOME}/findbugs/latest
export CLOVER_HOME=${TOOLS_HOME}/clover/latest
export MAVEN_HOME=/home/jenkins/tools/maven/apache-maven-3.5.0
export PATH=$PATH:${MAVEN_HOME}/bin:
YETUS_RELEASE=0.9.0
COMPONENT=${WORKSPACE}/component
TEST_FRAMEWORK=${WORKSPACE}/test_framework
PATCHPROCESS=${WORKSPACE}/patchprocess
if [[ -d ${PATCHPROCESS} ]]; then
echo "[WARN] patch process already existed '${PATCHPROCESS}'"
rm -rf "${PATCHPROCESS}"
fi
mkdir -p "${PATCHPROCESS}"
# First time we call this it's from jenkins, so break it on spaces
YETUS_ARGS=(${YETUS_ARGS} --jenkins)
### Download Yetus
if [ ! -d "${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}" ]; then
mkdir -p "${TEST_FRAMEWORK}"
cd "${TEST_FRAMEWORK}"
# clear out any cached 'use a prerelease' versions
rm -rf apache-yetus-*
mkdir -p "${TEST_FRAMEWORK}/.gpg"
chmod -R 700 "${TEST_FRAMEWORK}/.gpg"
curl -L --fail -o "${TEST_FRAMEWORK}/KEYS_YETUS" https://dist.apache.org/repos/dist/release/yetus/KEYS
gpg --homedir "${TEST_FRAMEWORK}/.gpg" --import "${TEST_FRAMEWORK}/KEYS_YETUS"
## Release
curl -L --fail -O "https://dist.apache.org/repos/dist/release/yetus/${YETUS_RELEASE}/apache-yetus-${YETUS_RELEASE}-bin.tar.gz"
curl -L --fail -O "https://dist.apache.org/repos/dist/release/yetus/${YETUS_RELEASE}/apache-yetus-${YETUS_RELEASE}-bin.tar.gz.asc"
gpg --homedir "${TEST_FRAMEWORK}/.gpg" --verify "apache-yetus-${YETUS_RELEASE}-bin.tar.gz.asc"
tar xzpf "apache-yetus-${YETUS_RELEASE}-bin.tar.gz"
fi
TESTPATCHBIN=${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}/bin/test-patch
TESTPATCHLIB=${TEST_FRAMEWORK}/apache-yetus-${YETUS_RELEASE}/lib/precommit
if [[ "true" = "${DEBUG}" ]]; then
# DEBUG print the test framework
ls -l "${TESTPATCHBIN}"
ls -la "${TESTPATCHLIB}/test-patch.d/"
# DEBUG print the local customization
if [ -d "${COMPONENT}/dev-support/test-patch.d" ]; then
ls -la "${COMPONENT}/dev-support/test-patch.d/"
fi
YETUS_ARGS=(--debug ${YETUS_ARGS[@]})
fi
if [ ! -x "${TESTPATCHBIN}" ] && [ -n "${TEST_FRAMEWORK}" ] && [ -d "${TEST_FRAMEWORK}" ]; then
echo "Something is amiss with the test framework; removing it. please re-run."
rm -rf "${TEST_FRAMEWORK}"
exit 1
fi
cd "${WORKSPACE}"
#
# Yetus *always* builds with JAVA_HOME, so no need to list it.
#
# non-docker-mode JDK:
# --findbugs-home=/home/jenkins/tools/findbugs/latest \
# docker-mode: (openjdk 7 added for free)
# --findbugs-home=/usr \
# --docker \
# --multijdkdirs="/usr/lib/jvm/java-8-openjdk-amd64" \
if [[ "true" = "${RUN_IN_DOCKER}" ]]; then
YETUS_ARGS=( --docker --multijdkdirs="/usr/lib/jvm/java-8-openjdk-amd64" --findbugs-home=/usr ${YETUS_ARGS[@]})
if [ -r "${COMPONENT}/dev-support/Dockerfile" ]; then
YETUS_ARGS=(--dockerfile="${COMPONENT}/dev-support/Dockerfile" ${YETUS_ARGS[@]})
fi
else
YETUS_ARGS=(--findbugs-home=/home/jenkins/tools/findbugs/latest ${YETUS_ARGS[@]})
fi
if [ -d "${COMPONENT}/dev-support/test-patch.d" ]; then
YETUS_ARGS=("--user-plugins=${COMPONENT}/dev-support/test-patch.d" ${YETUS_ARGS[@]})
fi
if [ -r "${COMPONENT}/dev-support/hbase-personality.sh" ] ; then
YETUS_ARGS=("--personality=${COMPONENT}/dev-support/hbase-personality.sh" ${YETUS_ARGS[@]})
fi
YETUS_ARGS=("--html-report-file=${PATCHPROCESS}/console-report.html" "${YETUS_ARGS[@]}")
/bin/bash "${TESTPATCHBIN}" \
"${YETUS_ARGS[@]}" \
--patch-dir="${PATCHPROCESS}" \
--basedir="${COMPONENT}" \
--mvn-custom-repos \
--github-repo=apache/hbase-operator-tools \
--plugins='all' \
GH:"${ghprbPullId}"
find "${COMPONENT}" -name target -exec chmod -R u+w {} \;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment