#!/bin/bash export PATH=/home/jenkins/jdk/bin/:$PATH # Get the Eclipse launcher and build script to use set -x set -e TRUNK_HOME=$(cd $(pwd)/../../ ; pwd) #gives you the posibility to overwrite eclipse, if you do not use URL [ -n "${ECLIPSE_HOME}" ] || { echo "using default ECLIPSE_HOME=${TRUNK_HOME}/eclipse"; ECLIPSE_HOME=${TRUNK_HOME}/eclipse; } BUILD_RELEASE_ID_PREFIX=Linux_SGX_1.5 if [ "$RELEASE_ID" != "${RELEASE_ID%$BUILD_RELEASE_ID_PREFIX*}" ]; then echo "$BUILD_RELEASE_ID_PREFIX IS in $RELEASE_ID, so it is an triggered build. Change the RELEASE_ID to an accepted form." temp=${RELEASE_ID#$BUILD_RELEASE_ID_PREFIX} RELEASE_ID=v`echo ${temp} | tr -d _ | tr -d -` else echo "$BUILD_RELEASE_ID_PREFIX is NOT in $RELEASE_ID. Keeping the user specified RELEASE_ID." fi function main() { validate-jenkins-parameters cleanupPreBuild checkEnvironment buildPlugin archivePlugin } function validate-jenkins-parameters { validate-parameter "DELETE_CURRENT_ECLIPSE" "$DELETE_CURRENT_ECLIPSE" [[ "ECLIPSE_DOWNLOAD_URL" != "" ]] && echo "[WARNING] ECLIPSE_DOWNLOAD_URL is not set; assume eclipse archive is already downloaded" } function validate-parameter { local NAME="$1" local VALUE="$2" [[ ! -z "$VALUE" ]] || { echo "Mandatory Jenkins parameter '\$$NAME' not set !" exit 1 } } function cleanupPreBuild() { ./clean.sh [[ "false" == "${DELETE_CURRENT_ECLIPSE}" ]] || { forceRemoveEclipse } } function forceRemoveEclipse() { pushd ${TRUNK_HOME} rm -fr eclipse popd } function checkEnvironment() { if [ ! -d "${ECLIPSE_HOME}" ]; then echo "Eclipse does not exist" echo "Downloading eclipse" getEclipse fi if [ -z "$RELEASE_ID" ]; then echo "Mandatory variable RELEASE_ID not defined; exiting" exit fi } function getEclipse() { local eclipseArchiveURL="${ECLIPSE_DOWNLOAD_URL}" pushd $TRUNK_HOME cleanupEclipseArchive downloadEclipse "${eclipseArchiveURL}" unzipEclipse installPDE cleanupEclipseArchive popd } function cleanupEclipseArchive() { find . -maxdepth 1 -mindepth 1 -name "*eclipse*.zip*" | xargs rm -f } function downloadEclipse() { local URL="$1" if [[ "$1" != "" ]] ; then echo " wget --no-proxy "$1"" wget --no-proxy "$1" else echo "skip downloaded empty url" fi } function unzipEclipse() { pwd rm -fr eclipse local eclipseArchiveName="$(find . -maxdepth 1 -mindepth 1 -name "*eclipse*.zip*")" unzip "${eclipseArchiveName}" [[ -d eclipse ]] || { echo "Eclipse directory does not exist!" exit } # local eclipseFolderName=${eclipseArchiveName%.zip} # local eclipseArchiveName="eclipse" # mv "${eclipseFolderName}" eclipse } function installPDE() { echo "~~~~>" pwd ${ECLIPSE_HOME}/eclipse -nosplash \ -application org.eclipse.equinox.p2.director \ -repository http://download.eclipse.org/eclipse/updates/4.4 \ -destination ${ECLIPSE_HOME} \ -installIU org.eclipse.pde.source.feature.group \ -installIU org.eclipse.pde.feature.group } function buildPlugin() { pwd echo "PWD=`pwd`" echo "ECLIPSE_HOME=$ECLIPSE_HOME" #BASELOCATION="$PWD/target_platform" BASELOCATION="$ECLIPSE_HOME" BUILDVERSION="$RELEASE_ID" BUILDDIR="$PWD/build_directory" BUILDCONFIG="$PWD/build_config" LAUNCHER=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.equinox.launcher_*.jar` BUILDFILE=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.pde.build_*/scripts/build.xml` # make sure we found valid files if [ ! -f "$LAUNCHER" ]; then echo "Installation Error: Eclipse plugin org.eclipse.equinox.launcher...jar not detected. " \ "Found '$LAUNCHER'. Aborting." exit 1 fi if [ ! -f "$BUILDFILE" ]; then echo "Installation Error: Eclipse build file org.eclipse.pde.build_.../scripts/build.xml " \ "not detected. Found '$BUILDFILE'. Aborting." exit 1 fi # # -- Print configuration used and actually execute the build -- # echo "Eclipse configuration found:" echo " Eclipse Home: $ECLIPSE_HOME" echo " Launcher: $LAUNCHER" echo " Build File: $BUILDFILE" echo " Build Config: $BUILDCONFIG" echo " Base Location: $BASELOCATION" echo " Build Directory: $BUILDDIR" echo " Build Version: $BUILDVERSION" echo " Java: " $(which java) java -version # CURRENT_DIR=$(pwd) # ${ECLIPSE_HOME}/eclipse -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/${CURRENT_DIR}/build_directory/updatesite/sgx-eclipse-plugin -artifactRepository file:/${CURRENT_DIR}/build_directory/updatesite/featuresAndBundles -source ${CURRENT_DIR}/build_directory/ -config gtk.linux.x86 -compress -publishArtifacts # cp ./build_directory/updatesite/featuresAndBundles/artifacts.jar ./build_directory/updatesite/sgx-eclipse-plugin/ java \ -jar $LAUNCHER \ -application org.eclipse.ant.core.antRunner \ -buildfile $BUILDFILE \ -DbuildDirectory=$BUILDDIR \ -DbaseLocation=$BASELOCATION \ -Dbuilder=$BUILDCONFIG \ -DforceContextQualifier=$BUILDVERSION \ -v -v -v -v } function findFirst() { echo "enter Find First, $@" 1>&2 for i in "$@"; do if [ -f "$i" ]; then echo "found $i" 1>&2 echo "$i" return fi done } function archivePlugin() { pushd build_directory/updatesite/sgx-eclipse-plugin zip -r Intel-sgx-eclipse-plugin.zip * popd } main