#!/bin/sh ############################################################################################ # Name : /public/scripts/FullBuild # Purpose : A script to run a full Globecom software build, Based on perforce system # By : Yariv Sheizaf # Date : 28-Aug-2001 # Argumnets : # 1 - configuration name # 2 - Build number # if [ "$USER" != "cmadm" ] then echo "" echo "$0 should be run with user cmadm. Exit..." echo "" exit 1 fi HOSTN=`hostname` if [ "$HOSTN" != "tavola" ] then echo "" echo "$0 should be run from host tavola. Exit..." echo "" exit 1 fi ## Define servers SUNSRVR="tavola" LNXSRVR="panino" INTLSRVR="beygel" if [ $# -lt 2 ] then echo "Usage: $0 configuration-name Build-number" echo "Example: $0 prd_2.0 1.8.6" exit 1 fi CNFNAME=$1 ## Check configuration existing in P4 DB ISCNF="n" for i in `p4 dirs //Globecom/\* | awk -F/ '{print $NF}'` do if [ "$i" = "$CNFNAME" ] then ISCNF="y" fi done if [ "$ISCNF" = "n" ] then echo "" echo $CNFNAME" is not a valid configuration. Exit..." echo "" exit 1 fi INSDIR="/public/"$CNFNAME"/ins" if [ ! -d $INSDIR ] then echo "" echo $INSDIR" is not exist. Exit..." echo "" exit 1 fi ## Set Weblogic deployment server. Actually, tavola for WL-5.1, barbaree for WL-4.5.1 if [ "$CNFNAME" = "dev" ] then WEBLOGICSRVR="tavola" else WEBLOGICSRVR="barbaree" fi BUILDNUM=$2 ## Check Z2H label existance #p4 files @Z2H_Build_$BUILDNUM 1>/dev/null 2>&1 #if [ "$?" != "0" ] #then # echo "" # echo "Label Z2H_Build_"$BUILDNUM" not exist. Exit..." # echo "" # exit 1 #fi WRKROOTDIR=$HOME"/p4client/Globecom/"$CNFNAME"/Globecom" # Synchornize to correct Z2H build label #echo "" #echo "Synchronize Z2H_Build_"$BUILDNUM #p4 sync //Globecom/$CNFNAME/Globecom/Z2H/...#none > /dev/null #rm -rf $WRKROOTDIR/Z2H #p4 sync //Globecom/$CNFNAME/Globecom/Z2H/...@Z2H_Build_$BUILDNUM > /dev/null ## Prevent write into P4 DB echo "Set P4 protect to open-only mode" p4 protect -o > /tmp/$$.p4protect p4 protect -o | sed 's/write/open/' | p4 protect -i ## Clean working directorties, then put head revision's source files echo "" echo "Remove old Globecom source files" p4 sync //Globecom/$CNFNAME/Globecom/...#none > /dev/null rm -rf $WRKROOTDIR echo "Synchronize head revision of Globecom sources" p4 sync //Globecom/$CNFNAME/Globecom/... > /dev/null echo "" ## Clean working directorties, then put head revision's source files #for i in GIN globalsale html jars public scripts servlets Z2H #do # echo "Remove old "$i" source files" # p4 sync //Globecom/$CNFNAME/Globecom/$i/...#none > /dev/null # echo "Remove old "$i" directories" # rm -rf $WRKROOTDIR/$i # echo "Synchronize head revision of "$i # p4 sync //Globecom/$CNFNAME/Globecom/$i/... > /dev/null # echo "" #done ## REmove old Linux and INTL files and directories echo "Remove old GIN-LNX directories" rm -rf $WRKROOTDIR/GIN-LNX echo "Remove old GIN-INTL directories" rm -rf $WRKROOTDIR/GIN-INTL ## Update version (build No.) JAVA program VERPROG=$WRKROOTDIR/globalsale/util/Version.java sed 's/xyz/'$BUILDNUM'/' $VERPROG > $VERPROG.tmp chmod u+w $VERPROG mv $VERPROG.tmp $VERPROG chmod u-w $VERPROG ## Update Project Build identification File (PBF) ## Note: Changelist 612 is a template changelist for this order CHG=612 p4 change -o $CHG | sed 's/'$CHG'/new/' | p4 change -i > $$.newchg NEWCHG=`awk '{print $2}' $$.newchg` rm -f $$.newchg p4 sync //Globecom/$CNFNAME/Globecom/PBF.txt#none > /dev/null p4 sync //Globecom/$CNFNAME/Globecom/PBF.txt > /dev/null p4 edit -c $NEWCHG //Globecom/$CNFNAME/Globecom/PBF.txt echo $BUILDNUM > $WRKROOTDIR/PBF.txt p4 submit -c $NEWCHG ## Put Z2H files in GIN working directories echo "Copying Z2H files into GIN environment" /public/scripts/cpz2h $CNFNAME ## Prepare Linux and SUN-Intel working directories echo "Duplicate GIN to GIN-LNX" cp -r $WRKROOTDIR/GIN $WRKROOTDIR/GIN-LNX echo "Duplicate GIN to GIN-INTL" cp -r $WRKROOTDIR/GIN $WRKROOTDIR/GIN-INTL SUNDIR=$WRKROOTDIR"/GIN" LNXDIR=$WRKROOTDIR"/GIN-LNX" INTLDIR=$WRKROOTDIR"/GIN-INTL" echo "Run BuildGin via rsh" ## Sun Solaris GIN build rsh $SUNSRVR "cd $SUNDIR; /public/scripts/BuildGin > $$.BuildGin" & ## Sun intel GIN build rsh $INTLSRVR "cd $INTLDIR; /public/scripts/BuildGin > $$.BuildGinIntl" & ## Linux GIN build ## GRB is not in use anymore - 6-nov-2001. Yariv #echo "Modify GRB Apache include files for Linux configuration" #CURPWD=`pwd` #cd $WRKROOTDIR/GIN-LNX/GRB #for i in `ls -l *_Apache.h | awk '{print $NF}'` #do # cp $i $i.orig # sed 's?\#include \"http?\#include \"/usr/local/apache/include/http?' $i | sed 's?\#include \"util?\#include \"/usr/local/apache/include/util?' > $i.tmp # chmod u+w $i # mv $i.tmp $i # chmod u-w $i #done #cd $CURPWD rsh $LNXSRVR "cd $LNXDIR; /public/scripts/BuildGin > $$.BuildGinLnx" & wait echo "End GIN Build" echo"" ## CC Build echo "Remove old classes directory content" rm -rf $WRKROOTDIR/classes echo "move startuprecovery and weblogiclicense java files !!!!!!!" mv $WRKROOTDIR/globalsale/scheduler/StartUpRecovery.java $WRKROOTDIR/globalsale/scheduler/StartUpRecovery.java_tmp mv $WRKROOTDIR/public/ins/conf/GLB/WebLogicLicense.java $WRKROOTDIR/public/ins/conf/GLB/WebLogicLicense.java_tmp echo "Run CC Build" ANTDIR=/usr/local/jakarta-ant-1.3/bin # Set build.xml template files according to weblogic version rm -f $ANTDIR/build.xml.tmpl if [ "$CNFNAME" = "dev" ] then ln -s $ANTDIR/build.xml.tmpl_5.1 $ANTDIR/build.xml.tmpl else ln -s $ANTDIR/build.xml.tmpl_4.5.1 $ANTDIR/build.xml.tmpl fi rsh $WEBLOGICSRVR "$ANTDIR/antRun $ANTDIR $ANTDIR/ant $CNFNAME /install/weblogic" for i in `ls -l $WRKROOTDIR/classes | grep -v globecom | grep -v lib | awk '{print $NF}'` do rm -rf $WRKROOTDIR/classes/$i done echo "move startuprecovery and weblogiclicense java files !!!!!!!" mv $WRKROOTDIR/globalsale/scheduler/StartUpRecovery.java_tmp $WRKROOTDIR/globalsale/scheduler/StartUpRecovery.java mv $WRKROOTDIR/public/ins/conf/GLB/WebLogicLicense.java_tmp $WRKROOTDIR/public/ins/conf/GLB/WebLogicLicense.java CNFN=`echo $CNFNAME | awk -F. '{print $1}'` if [ "$CNFN" = "prd_2" ] then echo "Copy ser files into classes directory" CURPWD=`pwd` cd $WRKROOTDIR/globalsale/ejbs for i in `find . -name "*.ser"` do cp $i $WRKROOTDIR/classes/globecom/globalsale/ejbs/$i done else echo "Copy jar files into classes directory" CURPWD=`pwd` rm -rf $WRKROOTDIR/classes/deploy cp -r $WRKROOTDIR/globalsale/ejbs/deploy $WRKROOTDIR/classes fi echo "Copy gif files into classes directory" cp -r $WRKROOTDIR/globalsale/util/Images $WRKROOTDIR/classes/globecom/globalsale/util cd $CURPWD ## Pack tar.gz files from build product files into /public//ins echo "Pack product files into "$INSDIR"/*"$BUILDNUM".tar.gz" /public/scripts/CollectRelease $SUNDIR Build$BUILDNUM $CNFNAME ## Deploy the Java classes echo "Deploy Java classes. Run on "$WEBLOGICSRVR rsh $WEBLOGICSRVR -l weblogic "/public/scripts/CCBuildUnix.sh Build$BUILDNUM $CNFNAME" ## Remove pre-deploy classes echo "Remove pre-deploy classes from installation directory" rm -rf $INSDIR/Java/globecom ## Compress globalsale Java classes into CC.jar file echo "Compress globalsale Java classes into CC.jar" cd $INSDIR TARFILE="JavaClasses-SUN-Rel-Build"$BUILDNUM".tar" gunzip $TARFILE.gz tar xvf $TARFILE # Set ccjar.xml template files according to weblogic version rm -f $ANTDIR/ccjar.xml.tmpl if [ "$CNFNAME" = "dev" ] then ln -s $ANTDIR/ccjar.xml.tmpl_5.1 $ANTDIR/ccjar.xml.tmpl else ln -s $ANTDIR/ccjar.xml.tmpl_4.5.1 $ANTDIR/ccjar.xml.tmpl fi rsh $WEBLOGICSRVR "$ANTDIR/CCJarantRun $ANTDIR $ANTDIR/ant $CNFNAME /install/weblogic" rm -rf $INSDIR/globecom gzip $TARFILE ## Copy final jar files from WebLogic server to installation directory echo "Remove pre-deploy jars from installation directory" rm -f $INSDIR/deploy/*_src.jar echo "Copy deployed jars from Weblogic server into installation directory" rsh $WEBLOGICSRVR "cd /install/weblogic/classes/deploy; cp *.jar $INSDIR/deploy" ## Define and load build label echo "Define and load Globecom_Build_"$BUILDNUM" label" p4 label -d -f Globecom_Build_$BUILDNUM p4 label -o Globecom_Build_$BUILDNUM | sed 's?//Globecom?//Globecom/'$CNFNAME'/Globecom?' | grep -v tici | grep -v "\/\/depot" | p4 label -i p4 labelsync -l Globecom_Build_$BUILDNUM > /dev/null p4 label -o Globecom_Build_$BUILDNUM | sed 's/Options: unlocked/Options: locked/' | p4 label -i ## Reopen P4 protect for write to programmers echo "Reconstruct P4 protect to write-mode" p4 protect -i < /tmp/$$.p4protect rm -f /tmp/$$.p4protect echo "" exit 0