Sleds/masterbuild/jenkins.Build.sh

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}