#!/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}