252 lines
12 KiB
Bash
252 lines
12 KiB
Bash
#!/bin/bash
|
|
#
|
|
# This is the recipe Jenkins uses to build all cloud services.
|
|
#
|
|
export PATH=${JAVA_HOME}/bin:/usr/local/bin:/usr/bin:/bin:${PATH}
|
|
|
|
# enable this via Jenkins but also need libeye/etc. to do similar
|
|
MVN_REPO=""
|
|
MVN_REPO=-Dmaven.repo.local="$WORKSPACE/.m2"
|
|
export MVN_REPO # so that Makefiles will use
|
|
|
|
##############################################################
|
|
# These are set from the Jenkins project!
|
|
#MVN_PROJECTS_DEPLOY=""
|
|
#MVN_PROJECTS_1=""
|
|
#MAKE_PROJECTS_1=""
|
|
#MVN_PROJECTS_2=""
|
|
#MAKE_PROJECTS_2=""
|
|
#MVN_PROJECTS_3=""
|
|
#MVN_TEST=""
|
|
#MAKE_TEST=""
|
|
|
|
# Subprojects to deploy via 'mvn deploy'.
|
|
#DEPLOY_MVN_PROJECTS=""
|
|
#DEPLOY_MAKE_PROJECTS=""
|
|
##############################################################
|
|
|
|
# Diagnostics
|
|
echo "Using BRANCH: ${BRANCH_NAME}"
|
|
echo "GIT revision" `./utils/git-branch.sh`
|
|
|
|
# If the OUTPUT_PATH variable is not already set,
|
|
# presumably because this this job is being invoked by a human rather than by another job,
|
|
# set it now.
|
|
|
|
if [ "${OUTPUT_PATH}_" == "_" ]; then
|
|
OUTPUT_PATH="${BRANCH_NAME}/${BUILD_TIMESTAMP}"
|
|
fi
|
|
|
|
DISKSTATION_MOUNT_POINT=${JENKINS_HOME}/diskstation_builds
|
|
OUTPUT_FOLDER=${DISKSTATION_MOUNT_POINT}/${OUTPUT_PATH}
|
|
mkdir -p ${OUTPUT_FOLDER}
|
|
chmod a+rw ${OUTPUT_FOLDER}
|
|
|
|
# comment this out to debug this script
|
|
set +x
|
|
|
|
# this or /dev/null
|
|
#REDIR=" > /dev/null"
|
|
REDIR=""
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ========================================= CLEANING =========================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
# Clean all the Maven projects
|
|
|
|
for project in ${MVN_PROJECTS_DEPLOY} ${MVN_PROJECTS_1} ${MVN_PROJECTS_2} ${MVN_PROJECTS_3}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== CLEANING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} clean
|
|
done
|
|
|
|
# Clean all the make projects
|
|
|
|
for project in ${MAKE_PROJECTS_1} ${MAKE_PROJECTS_2}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== CLEANING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
make clean
|
|
done
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ===================================== BUILDING SERVICES ====================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== DEPLOYING SETTINGS.XML ==================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
# Copy utils/settings.xml and utils/settings-security.xml into the user jenkins' .m2 folder.
|
|
# Note: This should be isolated to the job being built, not global to all jobs.
|
|
|
|
cp "${WORKSPACE}/utils/settings.xml" ~jenkins/.m2
|
|
cp "${WORKSPACE}/utils/settings-security.xml" ~jenkins/.m2
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ========================= REGENERATING masterbuild-version.properties ======================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
cd $WORKSPACE/masterbuild
|
|
# New 8/22/14 TEB : Cause masterbuild-version.properties to be regenerated
|
|
ant init
|
|
# install master pom to repo
|
|
mvn ${MVN_REPO} install
|
|
|
|
# Build and deploy the first set of projects...
|
|
for project in ${MVN_PROJECTS_DEPLOY}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING and DEPLOYING $project =========================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} -DskipTests install
|
|
mvn ${MVN_REPO} -DskipTests deploy
|
|
done
|
|
|
|
# Build the first block of Maven projects
|
|
|
|
for project in ${MVN_PROJECTS_1}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} -DskipTests install
|
|
done
|
|
|
|
#
|
|
# Build the make projects
|
|
#
|
|
for project in ${MAKE_PROJECTS_1}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
make install
|
|
done
|
|
|
|
#
|
|
# Build the second block of Maven projects
|
|
#
|
|
for project in ${MVN_PROJECTS_2}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} -DskipTests install
|
|
done
|
|
|
|
#
|
|
# Build the second block of make projects
|
|
#
|
|
for project in ${MAKE_PROJECTS_2}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
make install
|
|
done
|
|
|
|
#
|
|
# Build the third block of Maven projects
|
|
#
|
|
for project in ${MVN_PROJECTS_3}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== BUILDING $project ========================================= ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} -DskipTests install
|
|
done
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== RUNNING MAKEFILE TESTS ==================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
for project in ${MAKE_TEST}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== TESTING $project ========================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
make test
|
|
done
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo =================================== RUNNING MAVEN TESTS ====================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
for project in ${MVN_TEST}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================== TESTING $project ========================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} test
|
|
done
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ======================================== DEPLOYING =========================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
# Deploy Maven projects.
|
|
for project in ${DEPLOY_MVN_PROJECTS}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ================================ DEPLOYING $project ========================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
mvn ${MVN_REPO} deploy -DskipTests
|
|
done
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ===================================== ASSEMBLING OUTPUT ====================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
|
|
# Wrap services up for deployment and distribute the zip file.
|
|
# If this is the SLEDS build, we need to assemble the output here.
|
|
if [ "${ASSEMBLE_SLEDS}_" != "_" ]; then
|
|
cd ${WORKSPACE}/sleds-deployment
|
|
mvn validate
|
|
mvn ${MVN_REPO} assembly:single deploy -DoutputFolder=/some/path
|
|
cp target/*.zip ${OUTPUT_FOLDER}
|
|
fi
|
|
|
|
if [ "${DEPLOY_DOCS}_" != "_" ]; then
|
|
HTML_FOLDER="/var/www/html/development/${BRANCH_NAME}"
|
|
ssh jenkins@docserv.sl.int "mkdir -p ${HTML_FOLDER}"
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo =================================== DEPLOYING DOCUMENTATION ================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
# Deploy documentation to docserv...
|
|
for project in ${MVN_PROJECTS_DEPLOY}
|
|
do
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ========================== Deploying documentation for $project ============================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|
|
cd "${WORKSPACE}/${project}"
|
|
ssh jenkins@docserv.sl.int "mkdir -p ${HTML_FOLDER}/${project}"
|
|
scp target/*javadoc*.jar jenkins@docserv.sl.int:${HTML_FOLDER}/${project}
|
|
ssh jenkins@docserv.sl.int "cd ${HTML_FOLDER}/${project}/; jar -xvf *.jar"
|
|
done
|
|
|
|
# Build the "master" index file...
|
|
cd ${WORKSPACE}/masterbuild
|
|
scp updateMasterIndex.pl jenkins@docserv.sl.int:/var/www/html/development/
|
|
ssh jenkins@docserv.sl.int "perl /var/www/html/development/updateMasterIndex.pl /var/www/html/development"
|
|
fi
|
|
|
|
echo ============================================================================================== ${REDIR}
|
|
echo ========================================= DONE! ============================================== ${REDIR}
|
|
echo ============================================================================================== ${REDIR}
|