re-scripts/bin/branch_1.2/README
New file @@ -0,0 +1,6 @@ rtm-RC-build.sh will create 1.2.RCn in /promoted-builds/ then run with same svn revision rtm-build.sh will create 1.2.0 in /promoted-builds re-scripts/bin/branch_1.2/daily-build.sh
New file @@ -0,0 +1,282 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds/branch1.2 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/branches/b1.2/ # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="dev@opends.dev.java.net" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="Branch 1.2 : OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/daily-builds/branch1.2/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_FAILED=0 ALL_FAILED=1 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_FAILED=0 else ANY_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/daily-builds/branch1.2/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} #JPI : to be able to access unit tests logs wia http if test -d "/daily-builds/branch1.2/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" then chmod -R 777 /daily-builds/branch1.2/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs fi if test -d "/daily-builds/branch1.2/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" then chmod -R 777 /daily-builds/branch1.2/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs fi #### if ${TEST} ${ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SUBJECT} (success)" else if ${TEST} ${ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/branch_1.2/promote-weekly-build-candidate.sh
New file @@ -0,0 +1,47 @@ #!/bin/sh set -x # Change to the directory that contains this script. cd `dirname $0` # Explicitly set a minimal PATH so we won't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define absolute paths to all commands that we will use in this script. CAT="/usr/bin/cat" RM="/usr/bin/rm" GREP="/usr/bin/grep" LN="/usr/bin/ln" # Find the latest candidate. If there isn't one, then fail. SCRIPT_DIR=`/usr/bin/pwd` BUILDS_DIR="/promoted-builds" BUILD_NUMBER_FILE="buildnumber.txt" CANDIDATE_DIR_NAME="candidate" LATEST_DIR_NAME="latest" CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}" if test ! -L "${CANDIDATE_DIR}" then echo "ERROR: No candidate directory ${CANDIDATE_DIR} could be found" echo "Does a candidate build exist?" exit 1 fi # Get the version number for this build. #VERSION_NUMBER_FILE=version.txt VERSION_NUMBER_FILE=1.2.0-RC2 VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"` # Remove the existing "latest" symlink and create a new one pointing to the # current candidate build. cd "${BUILDS_DIR}" ${RM} -f "${LATEST_DIR_NAME}" ${LN} -s "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" "${BUILDS_DIR}/${LATEST_DIR_NAME}" ${RM} -f "${CANDIDATE_DIR_NAME}" re-scripts/bin/branch_1.2/respin-weekly-build.sh
New file @@ -0,0 +1,45 @@ #!/bin/sh # Change to the directory that contains this script. cd `dirname $0` # Explicitly set a minimal PATH so we won't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define absolute paths to all commands that we will use in this script. CAT="/usr/bin/cat" RM="/usr/bin/rm" GREP="/usr/bin/grep" # Find the latest candidate. If there isn't one, then fail. SCRIPT_DIR=`/usr/bin/pwd` BUILDS_DIR="/promoted-builds" BUILD_NUMBER_FILE="buildnumber.txt" CANDIDATE_DIR_NAME="candidate" CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}" if test ! -L "${CANDIDATE_DIR}" then echo "ERROR: No candidate directory ${CANDIDATE_DIR} could be found" echo "Does a candidate build exist?" exit 1 fi # Get the version number for this build. VERSION_NUMBER_FILE=version.txt VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"` VERSION_STRING="OpenDS-${VERSION_NUMBER_STRING}" # Remove the existing candidate and build directory. cd "${BUILDS_DIR}" ${RM} -rf "${VERSION_NUMBER_STRING}" "${CANDIDATE_DIR_NAME}" # Kick off the weekly build again. "${SCRIPT_DIR}/weekly-build.sh" re-scripts/bin/branch_1.2/rtm-RC-build.sh
New file @@ -0,0 +1,385 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/promoted-builds/ WIKI_HOME=https://www.opends.org/1.2 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/branches/b1.2/ # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR_L}/latest" #JPI BUILD_NUMBER="" BUILD_NUMBER_STR="" VERSION_QUALIFIER="-RC2" echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` #VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` #JPI VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. RECIPIENT="qa@opends.dev.java.net" #RECIPIENT="jeanine.pikus@sun.com" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" #JPI : don't sv the build number # Write the build number and revision numbers to text files. #echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" #echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" #echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" #JPI a mettre a jour pour RC2 #LAST_REVISION_NUMBER=4709 #done LAST_REVISION_NUMBER=4762 LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/branch_1.2/rtm-build-carole.sh
New file @@ -0,0 +1,380 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/promoted-builds/1.2 WIKI_HOME=https://www.opends.org/1.0 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/branches/b1.2/ # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR_L}/latest" #JPI BUILD_NUMBER="" BUILD_NUMBER_STR="" VERSION_QUALIFIER="-RC1" echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` #VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` #JPI VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. #RECIPIENT="qa@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" #JPI : don't sv the build number # Write the build number and revision numbers to text files. #echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" #echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" #echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/branch_1.2/rtm-build.sh
New file @@ -0,0 +1,390 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/promoted-builds/ #BUILDS_DIR=/promoted-builds ==> JPI : a tester sans le / a la fin WIKI_HOME=https://docs.opends.org/1.2 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/branches/b1.2/ # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR_L}/latest" #JPI BUILD_NUMBER="" BUILD_NUMBER_STR="" VERSION_QUALIFIER="RC2" VERSION_QUALIFIER="" echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` #VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` #JPI VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. #RECIPIENT="qa@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. # JPI : update ??? with svn revision of 1.2.RC2 echo ${SVN} checkout -r 4920 -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -r 4920 -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" #JPI : don't sv the build number # Write the build number and revision numbers to text files. #echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" #echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" #echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" #JPI a mettre a jour pour RC2 #LAST_REVISION_NUMBER=4709 #done LAST_REVISION_NUMBER=4762 LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. #JPI #${RM} -f "${BUILDS_DIR}/candidate" #${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/branch_1.2/send-mail.sh
New file @@ -0,0 +1,11 @@ #!/bin/sh JAVA_HOME=/java/jdk6 export JAVA_HOME SCRIPT_DIR=`dirname ${0}` CLASSPATH=${SCRIPT_DIR}/lib/OpenDS.jar:${SCRIPT_DIR}/lib/mail.jar:${SCRIPT_DIR}/lib/activation.jar export CLASSPATH ${JAVA_HOME}/bin/java org.opends.server.util.EMailMessage --host global-zone "${@}" re-scripts/bin/branch_1.2/weekly-build.sh
New file @@ -0,0 +1,377 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/promoted-builds/1.2 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/branches/b1.2/ # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR}/latest" LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}` LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}` BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc` if test ${BUILD_NUMBER} -le 9 then BUILD_NUMBER_STR="00${BUILD_NUMBER}" else if test ${BUILD_NUMBER} -le 99 then BUILD_NUMBER_STR="0${BUILD_NUMBER}" else BUILD_NUMBER_STR="${BUILD_NUMBER}" fi fi echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}" echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. #RECIPIENT="qa@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com,Carole.Hebrard@Sun.COM" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Write the build number and revision numbers to text files. echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/build-ndb.sh
New file @@ -0,0 +1,308 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # do not checkout the code ; use the same as nightly builds ARG1=$1 ARG2=$2 echo "Building NDB Backend " echo "BUILD_DATE=$ARG1" echo "BUILDS_DIR=$ARG2" # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk NAWK=/usr/bin/nawk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` #JPIBUILDS_DIR=/daily-builds # Define the URL to use to access the repository. #JPISVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="dir-release-dev@sun.com" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="NDB Backend OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` #JPIBUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" #JPI${MKDIR} -p ${BUILD_DIR} BUILD_DATE="${ARG1}" BUILDS_DIR="${ARG2}" BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/buildNDBBackend-${BUILD_DATE}.log" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. # JPI no ; use the same code source as the daily build cd ${BUILD_DIR} #JPIecho ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 #JPI${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 #JPIecho >> ${LOG_FILE} #JPIecho >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS #JPIOLD_BUILDPROP_FILE=build.properties.origin #JPINEW_BUILDPROP_FILE=build.properties #JPIecho update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 #JPIecho cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 #JPIcp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin #JPIecho add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 #JPI${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} # #JPIecho >> ${LOG_FILE} #JPIecho >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_BUILD_FAILED=0 ALL_BUILD_FAILED=1 TEST_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building NDB Backend with Java version ${VERSION}" >> ${LOG_FILE} #JPI echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 #JPI ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 echo ./build.sh -Dmysql.lib.dir=/usr/local/mysql/share/java package >> ${LOG_FILE} 2>&1 ./build.sh -Dmysql.lib.dir=/usr/local/mysql/share/java package >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_BUILD_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS #JPI BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install #JPI export BASE_PATH #JPI echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 #JPI resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 #JPI # fix to make create-webstart-standalone.sh support jdk5 and jdk6 #JPI NEW_QUICKSETUP_FILE=`${MKTEMP}` #JPI JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp #JPI cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\//buildNDBBackend.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} #JPI mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved #JPI mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} #JPI ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build ./buildNDBBackend.${VERSION} done echo "end README ${BUILD_DIR}/README_NDBBackend.html " # Create a README_NDBBackend.html file in for this build. cat > ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}/buildNDBBackend-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS//buildNDBBackend.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME echo "end README ${BUILD_DIR}/README_NDBBackend.html " # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. #JPIcd ${BUILDS_DIR} #JPI${RM} -f latest #JPI${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. #JPICOUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` #JPIif ${TEST} ${COUNT} -gt 30 #JPIthen #JPI OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` #JPI ${RM} -rf ${OLDEST} #JPIfi #JPI : to be able to access unit tests logs wia http #JPIif test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" #JPIthen #JPI chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs #JPIfi #JPIif test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" #JPIthen #JPI chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs #JPIfi #### # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "NDB Backend OpenDS Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_BUILD_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} if ${TEST} ${TEST_FAILED} -eq 0 then SUBJECT_WITH_STATUS="${SUBJECT} (success)" else RESULT5_FILE=/$BUILD_DIR/OpenDS/build.jdk5/unit-tests/report/results.txt RESULT6_FILE=/$BUILD_DIR/OpenDS/build.jdk6/unit-tests/report/results.txt if ${TEST} -f ${RESULT5_FILE} && ${TEST} -f ${RESULT6_FILE} then RES=`cat ${RESULT5_FILE} ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)" elif ${TEST} -f ${RESULT5_FILE} then RES=`cat ${RESULT5_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: ${RES}% tests passed - JDK6: no test result)" elif ${TEST} -f ${RESULT6_FILE} then RES=`cat ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: no test result - JDK6: ${RES}% tests passed)" else SUBJECT_WITH_STATUS="${SUBJECT} (build successful - No test result)" fi fi else if ${TEST} ${ALL_BUILD_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} echo ' ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_NDBBackend.html" \ --attach "${LOG_FILE}" ' ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_NDBBackend.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/build-status.sh
New file @@ -0,0 +1,13 @@ #!/bin/sh # Define absolute paths to all commands we will use in this script. DIRNAME=/usr/bin/dirname # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH /java/jdk6/bin/java -classpath /export/home/builds/bin/build-status/classes org.opends.tools.BuildStatus re-scripts/bin/build-status/README
New file @@ -0,0 +1,5 @@ In a small piece of Java that generates a build status page in /daily-builds/status.html /java/jdk6/bin/java -classpath classes org.opends.tools.BuildStatus /java/jdk6/bin/javac -classpath src -d classes src/org/opends/tools/BuildStatus.java re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$1.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$2.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$Build.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$JDK.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$TestFailure.classBinary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus.classBinary files differ
re-scripts/bin/build-status/src/org/opends/tools/BuildStatus.java
New file @@ -0,0 +1,275 @@ package org.opends.tools; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.TreeSet; /** * * @author Sun Microsystems Inc. */ public class BuildStatus { // builds location private static final String ROOT_DIR = "/daily-builds"; // constants for html private static final String GREEN = "background-color: rgb(51, 255, 51);"; private static final String RED = "background-color: rgb(255, 102, 102);"; private static final String BODY = "#BODY#"; private static final String TABLES = "#TABLES#"; private static final String PAGE = "<html>" + " <head>" + " <meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">" + " <title>OpenDS builds status</title>" + " </head>" + " <body>" + " <div style=\"text-align: center;\"><big style=\"font-weight: bold;\">Daily builds status</big><br></div>" + " <br>" + TABLES + " </body>" + "</html>\n"; /** * @param args the command line arguments */ public static void main(String[] args) { // a collection of builds ordered from yougest to oldest Collection<DailyBuild> dailyBuilds = new TreeSet<DailyBuild>( new Comparator<DailyBuild>() { public int compare(DailyBuild o1, DailyBuild o2) { String date1 = o1.id.substring(0, 8); String date2 = o2.id.substring(0, 8); return date2.compareTo(date1); } }); try { // list directories in daily build directory String[] filenames = new File(ROOT_DIR).list(new FilenameFilter() { public boolean accept(File dir, String name) { for (int i = 0; i < name.length(); i++) { if (!Character.isDigit(name.charAt(i))) { return false; } } return true; } }); for (String filename : filenames) { try { // dedicated to Unix only !!! URL url = new URL("file:///" + ROOT_DIR + "/" + filename + "/build-" + filename + ".log"); DailyBuild dailyBuild = new DailyBuild(filename); Build build = null; TestFailure failure = null; boolean skip = false; BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String line; boolean firstTarget = true; while ((line = reader.readLine()) != null) { if (skip) { skip = false; } else if (line.startsWith("Building with Java version")) { // build beginning firstTarget = true; build = new Build(JDK.valueOf(line.substring(27, 31))); } else if (line.startsWith("BUILD")) { // build ending. Status can be : FAILED SUCCESSFUL if (firstTarget) { build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL")); dailyBuild.setBuild(build); firstTarget = false; } else { if (build.isSuccess()) { build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL")); } } } else if (line.contains("F A I L U R E ! ! !")) { // test failed failure = new TestFailure(line); skip = true; // skip next empty line } else if (failure != null && line.equals(" [testng] ")) { // end of test failure trace build.addFailure(failure); failure = null; } else { if (failure != null) { failure.appendLog(line.replace("<", "<").replace(">", ">")); } } } dailyBuilds.add(dailyBuild); reader.close(); } catch (Throwable t) { // may have lost one build } } StringBuilder allBuilds = new StringBuilder(); for (DailyBuild daily : dailyBuilds) { allBuilds.append(daily.toString()); } String html = PAGE.replace(TABLES, allBuilds); // write status.html page FileWriter writer = new FileWriter(ROOT_DIR + "/status.html", false); writer.write(html); writer.close(); } catch (Throwable t) { } } private static enum JDK { jdk5, jdk6 } /* * A DailyBuild has an identifier (date) and two builds (jdk5+jdk6). */ private static class DailyBuild { private static final String DATE = "#DATE#"; private static final String JDK5 = "#JDK5#"; private static final String JDK6 = "#JDK6#"; private static final String COLOR = "#COLOR#"; private static final String TEMPLATE = "<table style=\"width: 100%; text-align: center;\" border=\"1\" cellpadding=\"2\" cellspacing=\"2\">" + "<tbody>" + "<tr>" + "<td colspan=\"2\" rowspan=\"1\" style=\"" + COLOR + "vertical-align: middle; text-align: center;\">" + DATE + "</td>" + "</tr>" + "<tr>" + JDK5 + "</tr>" + "<tr>" + JDK6 + "</tr>" + "<br>"; private static final String JDK_MISSING = "<td style=\"background-color: rgb(255, 204, 0);\">Unknown</td><td></td>"; private Build jdk5; private Build jdk6; private String id; public DailyBuild(String id) { this.id = id; } public boolean isSuccess() { return this.jdk5 != null && this.jdk5.isSuccess() && this.jdk6 != null && this.jdk6.isSuccess(); } public void setBuild(Build build) { if (build.getJDK().equals(JDK.jdk5)) { this.jdk5 = build; } else { this.jdk6 = build; } } @Override public String toString() { //String date = this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8); String date = "<a href=\"" + this.id + "/build-" + this.id + ".log\">" + this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8) + "</a>"; String result = TEMPLATE.replace(DATE, date).replace(JDK5, this.jdk5 == null ? JDK_MISSING : this.jdk5.toString()).replace(JDK6, this.jdk6 == null ? JDK_MISSING : this.jdk6.toString()); if (this.isSuccess()) { result = result.replace(COLOR, GREEN); } else { result = result.replace(COLOR, RED); } return result; } } /* * A Build has a JDK version (5 or 6), a success and an optional list of * failures. */ private static class Build { private static final String FAILURES = "#FAILURES#"; private static final String VERSIONS = "#VERSIONS#"; private static final String TEMPLATE = "<td style=\"" + DailyBuild.COLOR + "width: 10%; vertical-align: middle; text-align: center;\">" + VERSIONS + "</td>" + "<td style=\"font-family: monospace; text-align: left;\">" + FAILURES + "</td>"; private JDK jdk; private boolean success; private List<TestFailure> failures; public Build(JDK jdk) { this.jdk = jdk; } public JDK getJDK() { return this.jdk; } public boolean isSuccess() { return this.success; } public void setSuccess(boolean success) { this.success = success; } public void addFailure(TestFailure failure) { if (this.failures == null) { this.failures = new ArrayList<TestFailure>(); } this.failures.add(failure); } @Override public String toString() { String result = TEMPLATE.replace(VERSIONS, this.jdk.name()); if (!this.success) { StringBuilder sb = new StringBuilder(); if (this.failures != null) { for (TestFailure failure : this.failures) { sb.append(failure.sb).append("<br>"); } } else { sb.append("<b>Unknown error.</b>"); } result = result.replace(FAILURES, sb).replace(DailyBuild.COLOR, RED); } else { result = result.replace(FAILURES, "").replace(DailyBuild.COLOR, GREEN); } return result; } } /* * A TestFailure encapsulates a list of relevant logs. */ private static class TestFailure { private StringBuilder sb; private String title; public TestFailure(String title) { this.title = title.substring(12, title.length()); } public void appendLog(String log) { if (this.sb == null) { this.sb = new StringBuilder("<p><b>").append(this.title).append("</b><br>"); } this.sb.append(log.substring(12, log.length())).append("<br>"); } } } re-scripts/bin/daily-build-for-release-eng.sh
New file @@ -0,0 +1,271 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds/ # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="jcduff@dev.java.net" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="Trunk: OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/fake${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_FAILED=0 ALL_FAILED=1 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_FAILED=0 else ANY_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SUBJECT} (success)" else if ${TEST} ${ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/daily-build.sh
New file @@ -0,0 +1,317 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk NAWK=/usr/bin/nawk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="dev@opends.dev.java.net" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_BUILD_FAILED=0 ALL_BUILD_FAILED=1 TEST_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_BUILD_FAILED=0 echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then TEST_FAILED=1 fi else ANY_BUILD_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_BUILD_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi #JPI : to be able to access unit tests logs wia http if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs fi if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs fi #### # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_BUILD_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} if ${TEST} ${TEST_FAILED} -eq 0 then SUBJECT_WITH_STATUS="${SUBJECT} (success)" else RESULT5_FILE=/$BUILD_DIR/OpenDS/build.jdk5/unit-tests/report/results.txt RESULT6_FILE=/$BUILD_DIR/OpenDS/build.jdk6/unit-tests/report/results.txt if ${TEST} -f ${RESULT5_FILE} && ${TEST} -f ${RESULT6_FILE} then RES=`cat ${RESULT5_FILE} ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)" elif ${TEST} -f ${RESULT5_FILE} then RES=`cat ${RESULT5_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: ${RES}% tests passed - JDK6: no test result)" elif ${TEST} -f ${RESULT6_FILE} then RES=`cat ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: no test result - JDK6: ${RES}% tests passed)" else SUBJECT_WITH_STATUS="${SUBJECT} (build successful - No test result)" fi fi else if ${TEST} ${ALL_BUILD_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} # build NDB Backend /export/home/builds/bin/build-ndb.sh ${BUILD_DATE} ${BUILDS_DIR} re-scripts/bin/daily-build_wt.sh
New file @@ -0,0 +1,297 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk NAWK=/usr/bin/nawk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="dev@opends.dev.java.net" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_BUILD_FAILED=0 ALL_BUILD_FAILED=1 TEST_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_BUILD_FAILED=0 echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 # ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then TEST_FAILED=1 fi else ANY_BUILD_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_BUILD_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi #JPI : to be able to access unit tests logs wia http if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs fi if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs fi #### # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_BUILD_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} if ${TEST} ${TEST_FAILED} -eq 0 then SUBJECT_WITH_STATUS="${SUBJECT} (success)" else RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)" fi else if ${TEST} ${ALL_BUILD_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/lib/OpenDS.jarBinary files differ
re-scripts/bin/lib/activation.jarBinary files differ
re-scripts/bin/lib/mail.jarBinary files differ
re-scripts/bin/promote-weekly-build-candidate.sh
New file @@ -0,0 +1,45 @@ #!/bin/sh # Change to the directory that contains this script. cd `dirname $0` # Explicitly set a minimal PATH so we won't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define absolute paths to all commands that we will use in this script. CAT="/usr/bin/cat" RM="/usr/bin/rm" GREP="/usr/bin/grep" LN="/usr/bin/ln" # Find the latest candidate. If there isn't one, then fail. SCRIPT_DIR=`/usr/bin/pwd` BUILDS_DIR="/promoted-builds" BUILD_NUMBER_FILE="buildnumber.txt" CANDIDATE_DIR_NAME="candidate" LATEST_DIR_NAME="latest" CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}" if test ! -L "${CANDIDATE_DIR}" then echo "ERROR: No candidate directory ${CANDIDATE_DIR} could be found" echo "Does a candidate build exist?" exit 1 fi # Get the version number for this build. VERSION_NUMBER_FILE=version.txt VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"` # Remove the existing "latest" symlink and create a new one pointing to the # current candidate build. cd "${BUILDS_DIR}" ${RM} -f "${LATEST_DIR_NAME}" ${LN} -s "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" "${BUILDS_DIR}/${LATEST_DIR_NAME}" ${RM} -f "${CANDIDATE_DIR_NAME}" re-scripts/bin/respin-weekly-build.sh
New file @@ -0,0 +1,45 @@ #!/bin/sh # Change to the directory that contains this script. cd `dirname $0` # Explicitly set a minimal PATH so we won't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define absolute paths to all commands that we will use in this script. CAT="/usr/bin/cat" RM="/usr/bin/rm" GREP="/usr/bin/grep" # Find the latest candidate. If there isn't one, then fail. SCRIPT_DIR=`/usr/bin/pwd` BUILDS_DIR="/promoted-builds" BUILD_NUMBER_FILE="buildnumber.txt" CANDIDATE_DIR_NAME="candidate" CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}" if test ! -L "${CANDIDATE_DIR}" then echo "ERROR: No candidate directory ${CANDIDATE_DIR} could be found" echo "Does a candidate build exist?" exit 1 fi # Get the version number for this build. VERSION_NUMBER_FILE=version.txt VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"` VERSION_STRING="OpenDS-${VERSION_NUMBER_STRING}" # Remove the existing candidate and build directory. cd "${BUILDS_DIR}" ${RM} -rf "${VERSION_NUMBER_STRING}" "${CANDIDATE_DIR_NAME}" # Kick off the weekly build again. "${SCRIPT_DIR}/weekly-build.sh" re-scripts/bin/rtm-build.sh
New file @@ -0,0 +1,392 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR_L=/promoted-builds BUILDS_DIR=/candidate-1.0.0/ WIKI_HOME=https://www.opends.org/1.0 # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR_L}/latest" LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}` LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}` BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc` #JPI BUILD_NUMBER="" BUILD_NUMBER_STR="" #if test ${BUILD_NUMBER} -le 9 #then # BUILD_NUMBER_STR="00${BUILD_NUMBER}" #else # if test ${BUILD_NUMBER} -le 99 # then # BUILD_NUMBER_STR="0${BUILD_NUMBER}" # else # BUILD_NUMBER_STR="${BUILD_NUMBER}" # fi #fi echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}" echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` #JPI #VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}${BUILD_NUMBER_STR}" VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. #RECIPIENT="qa@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. # JPI : checkout svn rev = 4337 (build16) echo ${SVN} checkout -r 4337 -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -r 4337 -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" #JPI #echo ./build.sh weekly -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 #CH #echo ./build.sh weekly -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 echo ./build.sh weekly svr4 -Dwiki.home=${WIKI_HOME} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 #./build.sh weekly -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 #./build.sh weekly -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly svr4 -Dwiki.home=${WIKI_HOME} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" #JPI : don't sv the build number # Write the build number and revision numbers to text files. #echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" #echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" #echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/send-mail.sh
New file @@ -0,0 +1,11 @@ #!/bin/sh JAVA_HOME=/java/jdk6 export JAVA_HOME SCRIPT_DIR=`dirname ${0}` CLASSPATH=${SCRIPT_DIR}/lib/OpenDS.jar:${SCRIPT_DIR}/lib/mail.jar:${SCRIPT_DIR}/lib/activation.jar export CLASSPATH ${JAVA_HOME}/bin/java org.opends.server.util.EMailMessage --host global-zone "${@}" re-scripts/bin/test/daily-build.sh
New file @@ -0,0 +1,264 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds/ # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" RECIPIENT="dev@opends.dev.java.net" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_FAILED=0 ALL_FAILED=1 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_FAILED=0 else ANY_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SUBJECT} (success)" else if ${TEST} ${ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/test/daily-build.sh.carole
New file @@ -0,0 +1,265 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds/tests # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" #RECIPIENT="dev@opends.dev.java.net" RECIPIENT="carole.hebrard@sun.com" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_FAILED=0 ALL_FAILED=1 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_FAILED=0 else ANY_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SUBJECT} (success)" else if ${TEST} ${ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/test/daily-build.sh.hidden
New file @@ -0,0 +1,335 @@ #!/bin/sh # If an option is given to this script, it is assumed as running in # sanity check mode # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/daily-builds/tests # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. #RECIPIENT="opends-staff@sun.com" #RECIPIENT="dev@opends.dev.java.net" RECIPIENT="carole.hebrard@sun.com" SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}" SVR4_RECIPIENT="carole.hebrard@sun.com" SVR4_SUBJECT="OpenDS Daily SVR4 Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" #SERVER_NAME="www2.opends.org" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}${BUILD_DIR}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_FAILED=0 ALL_FAILED=1 SVR4_ANY_FAILED=0 SVR4_ALL_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_FAILED=0 else ANY_FAILED=1 fi # Build svr4 package ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then SVR4_ALL_FAILED=0 else SVR4_ANY_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=${BUILDS_DIR}/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then exit 1 fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Create a README_SVR4.html file in for this build. cat > ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily SVR4 Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/svr4/opends.zip">SVR4 package</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SUBJECT} (success)" else if ${TEST} ${ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} # Send an e-mail message to indicate if svr4 has been built BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" with SVR4 > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${SVR4_ANY_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} SUBJECT_WITH_STATUS="${SVR4_SUBJECT} (success)" else if ${TEST} ${SVR4_ALL_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SVR4_SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${SVR4_RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_SVR4.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/weekly-build.sh
New file @@ -0,0 +1,376 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test #If an argument is provided, let's assume we run a sanity check (no mail) if ${TEST} $# -gt 0 then SANITY=1 else SANITY=0 fi # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` BUILDS_DIR=/promoted-builds # Define the URL to use to access the repository. SVN_URL=file:///svn-mirror/trunk/opends # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR}/latest" LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}` LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}` BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc` if test ${BUILD_NUMBER} -le 9 then BUILD_NUMBER_STR="00${BUILD_NUMBER}" else if test ${BUILD_NUMBER} -le 99 then BUILD_NUMBER_STR="0${BUILD_NUMBER}" else BUILD_NUMBER_STR="${BUILD_NUMBER}" fi fi echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}" echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. RECIPIENT="qa@opends.dev.java.net" SENDER="opends@dev.java.net" SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Write the build number and revision numbers to text files. echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}" re-scripts/bin/ws/README
New file @@ -0,0 +1,4 @@ 2009/01/20 : this is a new version of the scripts used to build opends the goal is to share maximum between the branches instead of making a copy for each branch if you want to add a new product , make a copy of a file ./product/branch12 in ./product/newbranch and update what needs to be updated. re-scripts/bin/ws/build-status/README
New file @@ -0,0 +1,5 @@ In a small piece of Java that generates a build status page in /daily-builds/status.html /java/jdk6/bin/java -classpath classes org.opends.tools.BuildStatus /java/jdk6/bin/javac -classpath src -d classes src/org/opends/tools/BuildStatus.java re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$1.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$2.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$Build.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$JDK.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$TestFailure.classBinary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus.classBinary files differ
re-scripts/bin/ws/build-status/src/org/opends/tools/BuildStatus.java
New file @@ -0,0 +1,275 @@ package org.opends.tools; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.TreeSet; /** * * @author Sun Microsystems Inc. */ public class BuildStatus { // builds location private static final String ROOT_DIR = "/daily-builds"; // constants for html private static final String GREEN = "background-color: rgb(51, 255, 51);"; private static final String RED = "background-color: rgb(255, 102, 102);"; private static final String BODY = "#BODY#"; private static final String TABLES = "#TABLES#"; private static final String PAGE = "<html>" + " <head>" + " <meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">" + " <title>OpenDS builds status</title>" + " </head>" + " <body>" + " <div style=\"text-align: center;\"><big style=\"font-weight: bold;\">Daily builds status</big><br></div>" + " <br>" + TABLES + " </body>" + "</html>\n"; /** * @param args the command line arguments */ public static void main(String[] args) { // a collection of builds ordered from yougest to oldest Collection<DailyBuild> dailyBuilds = new TreeSet<DailyBuild>( new Comparator<DailyBuild>() { public int compare(DailyBuild o1, DailyBuild o2) { String date1 = o1.id.substring(0, 8); String date2 = o2.id.substring(0, 8); return date2.compareTo(date1); } }); try { // list directories in daily build directory String[] filenames = new File(ROOT_DIR).list(new FilenameFilter() { public boolean accept(File dir, String name) { for (int i = 0; i < name.length(); i++) { if (!Character.isDigit(name.charAt(i))) { return false; } } return true; } }); for (String filename : filenames) { try { // dedicated to Unix only !!! URL url = new URL("file:///" + ROOT_DIR + "/" + filename + "/build-" + filename + ".log"); DailyBuild dailyBuild = new DailyBuild(filename); Build build = null; TestFailure failure = null; boolean skip = false; BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String line; boolean firstTarget = true; while ((line = reader.readLine()) != null) { if (skip) { skip = false; } else if (line.startsWith("Building with Java version")) { // build beginning firstTarget = true; build = new Build(JDK.valueOf(line.substring(27, 31))); } else if (line.startsWith("BUILD")) { // build ending. Status can be : FAILED SUCCESSFUL if (firstTarget) { build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL")); dailyBuild.setBuild(build); firstTarget = false; } else { if (build.isSuccess()) { build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL")); } } } else if (line.contains("F A I L U R E ! ! !")) { // test failed failure = new TestFailure(line); skip = true; // skip next empty line } else if (failure != null && line.equals(" [testng] ")) { // end of test failure trace build.addFailure(failure); failure = null; } else { if (failure != null) { failure.appendLog(line.replace("<", "<").replace(">", ">")); } } } dailyBuilds.add(dailyBuild); reader.close(); } catch (Throwable t) { // may have lost one build } } StringBuilder allBuilds = new StringBuilder(); for (DailyBuild daily : dailyBuilds) { allBuilds.append(daily.toString()); } String html = PAGE.replace(TABLES, allBuilds); // write status.html page FileWriter writer = new FileWriter(ROOT_DIR + "/status.html", false); writer.write(html); writer.close(); } catch (Throwable t) { } } private static enum JDK { jdk5, jdk6 } /* * A DailyBuild has an identifier (date) and two builds (jdk5+jdk6). */ private static class DailyBuild { private static final String DATE = "#DATE#"; private static final String JDK5 = "#JDK5#"; private static final String JDK6 = "#JDK6#"; private static final String COLOR = "#COLOR#"; private static final String TEMPLATE = "<table style=\"width: 100%; text-align: center;\" border=\"1\" cellpadding=\"2\" cellspacing=\"2\">" + "<tbody>" + "<tr>" + "<td colspan=\"2\" rowspan=\"1\" style=\"" + COLOR + "vertical-align: middle; text-align: center;\">" + DATE + "</td>" + "</tr>" + "<tr>" + JDK5 + "</tr>" + "<tr>" + JDK6 + "</tr>" + "<br>"; private static final String JDK_MISSING = "<td style=\"background-color: rgb(255, 204, 0);\">Unknown</td><td></td>"; private Build jdk5; private Build jdk6; private String id; public DailyBuild(String id) { this.id = id; } public boolean isSuccess() { return this.jdk5 != null && this.jdk5.isSuccess() && this.jdk6 != null && this.jdk6.isSuccess(); } public void setBuild(Build build) { if (build.getJDK().equals(JDK.jdk5)) { this.jdk5 = build; } else { this.jdk6 = build; } } @Override public String toString() { //String date = this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8); String date = "<a href=\"" + this.id + "/build-" + this.id + ".log\">" + this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8) + "</a>"; String result = TEMPLATE.replace(DATE, date).replace(JDK5, this.jdk5 == null ? JDK_MISSING : this.jdk5.toString()).replace(JDK6, this.jdk6 == null ? JDK_MISSING : this.jdk6.toString()); if (this.isSuccess()) { result = result.replace(COLOR, GREEN); } else { result = result.replace(COLOR, RED); } return result; } } /* * A Build has a JDK version (5 or 6), a success and an optional list of * failures. */ private static class Build { private static final String FAILURES = "#FAILURES#"; private static final String VERSIONS = "#VERSIONS#"; private static final String TEMPLATE = "<td style=\"" + DailyBuild.COLOR + "width: 10%; vertical-align: middle; text-align: center;\">" + VERSIONS + "</td>" + "<td style=\"font-family: monospace; text-align: left;\">" + FAILURES + "</td>"; private JDK jdk; private boolean success; private List<TestFailure> failures; public Build(JDK jdk) { this.jdk = jdk; } public JDK getJDK() { return this.jdk; } public boolean isSuccess() { return this.success; } public void setSuccess(boolean success) { this.success = success; } public void addFailure(TestFailure failure) { if (this.failures == null) { this.failures = new ArrayList<TestFailure>(); } this.failures.add(failure); } @Override public String toString() { String result = TEMPLATE.replace(VERSIONS, this.jdk.name()); if (!this.success) { StringBuilder sb = new StringBuilder(); if (this.failures != null) { for (TestFailure failure : this.failures) { sb.append(failure.sb).append("<br>"); } } else { sb.append("<b>Unknown error.</b>"); } result = result.replace(FAILURES, sb).replace(DailyBuild.COLOR, RED); } else { result = result.replace(FAILURES, "").replace(DailyBuild.COLOR, GREEN); } return result; } } /* * A TestFailure encapsulates a list of relevant logs. */ private static class TestFailure { private StringBuilder sb; private String title; public TestFailure(String title) { this.title = title.substring(12, title.length()); } public void appendLog(String log) { if (this.sb == null) { this.sb = new StringBuilder("<p><b>").append(this.title).append("</b><br>"); } this.sb.append(log.substring(12, log.length())).append("<br>"); } } } re-scripts/bin/ws/daily-build.sh
New file @@ -0,0 +1,349 @@ #!/bin/sh set -x # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk NAWK=/usr/bin/nawk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #Default Values PROD="TEST : " BUILDS_DIR=test-builds SVN_URL=file:///svn-mirror/trunk/opends RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" SANITY=0 TEST_MODE=0 if ${TEST} $# -gt 0 then SANITY=0 if ${TEST} $# -eq 1 then Product=$@ else if ${TEST} $# -eq 2 then Product=$1 TEST_MODE=1 else echo "too much parameters ..." exit fi fi # Config files echo ${Product} if [ ! -d /export/home/builds/bin/ws/product/${Product} ] then . /export/home/builds/bin/ws/product/${Product} else echo "the file /export/home/builds/bin/ws/product/${Product} doesn't exist .." exit fi if ${TEST} ${TEST_MODE} -eq 1 then echo "MODE TEST..." BUILDS_DIR=${BUILDS_DIR}/tests RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" fi else SANITY=0 Product="" # need to be dev : I would like to add a mode test echo "not enough parameters ..." echo "you must specify either trunk , either branch12 see /export/home/builds/bin/ws/product/" echo `date` >> /export/home/builds/bin/ws/trace exit fi echo "=========================" echo "Product = ${Product}" echo "PROD = ${PROD}" echo "BUILDS_DIR = ${BUILDS_DIR}" echo "SVN_URL = ${SVN_URL}" echo "RECIPIENT = ${RECIPIENT}" echo "=========================" # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` # Define the URL to use to access the repository. #SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="${PROD} OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" ${MKDIR} -p ${BUILD_DIR} # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/" echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_BUILD_FAILED=0 ALL_BUILD_FAILED=1 TEST_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_BUILD_FAILED=0 echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then TEST_FAILED=1 fi else ANY_BUILD_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_BUILD_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit #if ${TEST} ${SANITY} -eq 1 #then # exit 1 #fi # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi #JPI : to be able to access unit tests logs wia http if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs fi if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs fi #### # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_BUILD_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} if ${TEST} ${TEST_FAILED} -eq 0 then SUBJECT_WITH_STATUS="${SUBJECT} (success)" else RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)" fi else if ${TEST} ${ALL_BUILD_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/ws/getParameter.sh
New file @@ -0,0 +1,70 @@ #!/bin/sh TEST=/usr/bin/test #Default Values PROD="TEST : " BUILDS_DIR=test-builds SVN_URL=file:///svn-mirror/trunk/opends RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" SANITY=1 TEST_MODE=0 if ${TEST} $# -gt 0 then SANITY=0 if ${TEST} $# -eq 1 then Product=$@ else if ${TEST} $# -eq 2 then Product=$1 TEST_MODE=1 else echo "too much parameters ..." exit fi fi # Config files echo ${Product} if [ ! -d ./product/${Product} ] then . ./product/${Product} else echo "the file ./product/${Product} doesn't exist .." exit fi if ${TEST} ${TEST_MODE} -eq 1 then echo "MODE TEST..." BUILDS_DIR=${BUILDS_DIR}/tests RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" fi else SANITY=1 Product="" # need to be dev : I would like to add a mode test echo "not enough parameters ..." echo "you must specify either trunk , either branch12 see ./product/" exit fi export Product export PROD export BUILDS_DIR export SVN_URL export RECIPIENT export TEST_MODE export SANITY echo "=========================" echo "Product = ${Product}" echo "PROD = ${PROD}" echo "BUILDS_DIR = ${BUILDS_DIR}" echo "SVN_URL = ${SVN_URL}" echo "RECIPIENT = ${RECIPIENT}" echo "=========================" re-scripts/bin/ws/mydaily-build.sh
New file @@ -0,0 +1,364 @@ #!/bin/sh set -x # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands we will use in this script. AWK=/usr/bin/awk NAWK=/usr/bin/nawk CAT=/usr/bin/cat CHMOD=/usr/bin/chmod CUT=/usr/bin/cut DATE=/usr/bin/date DIRNAME=/usr/bin/dirname GREP=/usr/bin/grep GZIP=/usr/bin/gzip HEAD=/usr/bin/head LN=/usr/bin/ln LS=/usr/bin/ls MKDIR=/usr/bin/mkdir MKTEMP=/usr/bin/mktemp MV=/usr/bin/mv RM=/usr/bin/rm SORT=/usr/bin/sort SVN=/opt/csw/bin/svn TAR=/usr/bin/tar TEST=/usr/bin/test WC=/usr/bin/wc SENDMAIL=/export/home/builds/bin/send-mail.sh #Default Values PROD="TEST : " BUILDS_DIR=test-builds SVN_URL=file:///svn-mirror/trunk/opends RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" SANITY=1 TEST_MODE=0 if ${TEST} $# -gt 0 then SANITY=0 if ${TEST} $# -eq 1 then Product=$@ else if ${TEST} $# -eq 2 then Product=$1 TEST_MODE=1 else echo "too much parameters ..." exit fi fi # Config files echo ${Product} if [ ! -d ./product/${Product} ] then . ./product/${Product} else echo "the file ./product/${Product} doesn't exist .." exit fi if ${TEST} ${TEST_MODE} -eq 1 then echo "MODE TEST..." BUILDS_DIR=${BUILDS_DIR}/tests RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com" fi else SANITY=1 Product="" # need to be dev : I would like to add a mode test echo "not enough parameters ..." echo "you must specify either trunk , either branch12 see ./product/" exit fi echo "=========================" echo "Product = ${Product}" echo "PROD = ${PROD}" echo "BUILDS_DIR = ${BUILDS_DIR}" echo "SVN_URL = ${SVN_URL}" echo "RECIPIENT = ${RECIPIENT}" echo "=========================" # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Define paths that will be used during this script. SCRIPT_DIR=`pwd` # Define the URL to use to access the repository. #SVN_URL=file:///svn-mirror/trunk/opends # Define variables that will be used when sending the e-mail message. SENDER="opends@dev.java.net" SUBJECT_DATE=`${DATE} '+%Y%m%d'` SUBJECT="${PROD} OpenDS Daily Build ${SUBJECT_DATE}" # Create a new directory to hold the build. #BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` #${MKDIR} -p ${BUILD_DIR} BUILD_DATE=20090122033538 BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}" # Start generating a log file for the build. LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log" SERVER_NAME="www.opends.org" BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/" ############## ##JPIJPI ############## MYDAILY=0 if ${TEST} ${MYDAILY} -eq 1 then echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE} echo "Build Time: ${BUILD_DATE}" >> ${LOG_FILE} echo "Build URL: ${BUILD_URL}" >> ${LOG_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Check out the head revision from the repository. cd ${BUILD_DIR} echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # Add information about the checked-out revision to the log. cd OpenDS echo ${SVN} info >> ${LOG_FILE} 2>&1 ${SVN} info >> ${LOG_FILE} 2>&1 echo >> ${LOG_FILE} echo >> ${LOG_FILE} # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end # Parse the PRODUCT file to get the version information. SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" # Loop through the JDK versions and build usin gthe "nightly" target. # We'll set JAVA_HOME each time, and when we're done, we can continue using # the last one. ANY_BUILD_FAILED=0 ALL_BUILD_FAILED=1 TEST_FAILED=0 for VERSION in ${JAVA_VERSIONS} do # Removes directory that might be still there if test failed before # @AfterClass that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi JAVA_HOME=/java/${VERSION} export JAVA_HOME echo "Building with Java version ${VERSION}" >> ${LOG_FILE} echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -eq 0 then ALL_BUILD_FAILED=0 echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then TEST_FAILED=1 fi else ANY_BUILD_FAILED=1 fi echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1 if ${TEST} $? -ne 0 then ANY_BUILD_FAILED=1 fi # Create the Java Web Start install archive. ADDRESS="www.opends.org" export ADDRESS BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install export BASE_PATH echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1 # fix to make create-webstart-standalone.sh support jdk5 and jdk6 NEW_QUICKSETUP_FILE=`${MKTEMP}` JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE} mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE} ${CHMOD} +r ${JWS_QUICKSETUP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} ${MV} build build.${VERSION} done #If this is a sanity check, exit #if ${TEST} ${SANITY} -eq 1 #then # exit 1 #fi fi # MYDAILY eq 1 ############### ## JPIJPI ############### ANY_BUILD_FAILED=1 TEST_FAILED=1 # Create a README.html file in for this build. cat > ${BUILD_DIR}/README.html <<ENDOFREADME <TABLE BORDER="0"> <TR> <TD> <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD> <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2> <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A> ENDOFREADME for VERSION in ${JAVA_VERSIONS} do cat >> ${BUILD_DIR}/README.html <<ENDOFREADME <BR> <B>Build with Java Version ${VERSION}</B> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR> <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR> ENDOFREADME done cat >> ${BUILD_DIR}/README.html <<ENDOFREADME </TD> </TR> </TABLE> ENDOFREADME # Remove the "latest" symlink (if it exists) and recreate it pointing to # the new build. cd ${BUILDS_DIR} ${RM} -f latest ${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest # Remove an old directory if appropriate. We want to keep up to 30 builds. COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'` if ${TEST} ${COUNT} -gt 30 then OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1` ${RM} -rf ${OLDEST} fi #JPI : to be able to access unit tests logs wia http if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs fi if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs" then chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs fi #### # Send an e-mail message to indicate that the build is complete. BODY_FILE=`${MKTEMP}` echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE} echo "Java Versions Tested: ${JAVA_VERSIONS}" >> ${BODY_FILE} if ${TEST} ${ANY_BUILD_FAILED} -eq 0 then echo "Build Status: Succeeded for all Java versions" >> ${BODY_FILE} if ${TEST} ${TEST_FAILED} -eq 0 then SUBJECT_WITH_STATUS="${SUBJECT} (success)" else RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4} END {printf("%.2f\n",100-F/T*100)}` SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)" fi else if ${TEST} ${ALL_BUILD_FAILED} -eq 0 then echo "Build Status: Failed for some Java versions" >> ${BODY_FILE} else echo "Build Status: Failed for all Java versions" >> ${BODY_FILE} fi SUBJECT_WITH_STATUS="${SUBJECT} (failure)" fi echo "Build URL: ${BUILD_URL}" >> ${BODY_FILE} ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \ --attach "${LOG_FILE}" ${RM} ${BODY_FILE} re-scripts/bin/ws/product/branch12
New file @@ -0,0 +1,13 @@ PROD="Branch 1.2 :" BUILDS_DIR=/daily-builds/branch1.2/ PROMOTED_DIR=/promoted-builds/1.2 SVN_URL=file:///svn-mirror/branches/b1.2/ RECIPIENT="dev@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com" export PROD export BUILDS_DIR export SVN_URL export RECIPIENT re-scripts/bin/ws/product/trunk
New file @@ -0,0 +1,13 @@ PROD="" BUILDS_DIR=/daily-builds PROMOTED_DIR=/promoted-builds SVN_URL=file:///svn-mirror/trunk/opends RECIPIENT="dev@opends.dev.java.net" RECIPIENT="jeanine.pikus@sun.com" export PROD export BUILDS_DIR export SVN_URL export RECIPIENT re-scripts/bin/ws/test-builds/20090120094011/build-20090120094011.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094011 Build URL: http://www.opends.org/./test-builds/20090120094011/ re-scripts/bin/ws/test-builds/20090120094115/build-20090120094115.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094115 Build URL: http://www.opends.org/./test-builds/20090120094115/ re-scripts/bin/ws/test-builds/20090120094230/build-20090120094230.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094230 Build URL: http://www.opends.org/./test-builds/20090120094230/ re-scripts/bin/ws/test-builds/20090120094300/build-20090120094300.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094300 Build URL: http://www.opends.org/./test-builds/20090120094300/ re-scripts/bin/ws/test-builds/20090120094352/build-20090120094352.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094352 Build URL: http://www.opends.org/./test-builds/20090120094352/ re-scripts/bin/ws/test-builds/20090120094434/build-20090120094434.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120094434 Build URL: http://www.opends.org/test-builds/20090120094434/ re-scripts/bin/ws/test-builds/20090120105037/build-20090120105037.log
New file @@ -0,0 +1,5 @@ OpenDS Daily Build 20090120 Build Time: 20090120105037 Build URL: http://www.opends.org/test-builds/20090120105037/ re-scripts/bin/ws/weekly-build.sh
New file @@ -0,0 +1,384 @@ #!/bin/sh # Define the Java versions that we will use to perform the build. # These values should correspond to subdirectories below /java #JAVA_VERSIONS="jdk5 jdk6" # Define absolute paths to all commands that we will use in this script. AWK="/usr/bin/awk" BASENAME=/usr/bin/basename CAT="/usr/bin/cat" CHMOD="/usr/bin/chmod" DATE="/usr/bin/date" DIGEST="/usr/bin/digest" DIRNAME="/usr/bin/dirname" GREP="/usr/bin/grep" LN="/usr/bin/ln" MKDIR="/usr/bin/mkdir" MKTEMP="/usr/bin/mktemp" MV="/usr/bin/mv" PS="/usr/bin/ps" RM="/usr/bin/rm" SVN="/opt/csw/bin/svn" SENDMAIL="/export/home/builds/bin/send-mail.sh" TEST=/usr/bin/test . ./getParameter.sh $@ if ${TEST} $? -eq 1 then echo " stop there ..." exit 1 fi BUILDS_DIR=${PROMOTED_DIR} echo "=========================" echo "Product = ${Product}" echo "PROD = ${PROD}" echo "BUILDS_DIR = ${BUILDS_DIR}" echo "SVN_URL = ${SVN_URL}" echo "RECIPIENT = ${RECIPIENT}" echo "=========================" exit # Change to the directory that contains this script. cd `${DIRNAME} $0` # Explicitly set a minimal PATH so we don't run anything unexpected. PATH="/bin:/usr/bin" export PATH # Sanity checks # Removes directory that might be still there if test failed before @AfterClass # that normaly performs the cleanup FSCACHE=/tmp/OpenDS.FSCache if ${TEST} -d FSCACHE then ${RM} -rf ${FSCACHE} fi # Checks that no weekly build is running ${PS} | grep `${BASENAME} $0` if ${TEST} $? -eq 0 then echo "This script is already running. Aborting..." exit 1 fi # Checks that no daily build is running ${PS} | grep daily\.sh if ${TEST} $? -eq 0 then echo "The daily script is currently running. Aborting..." exit 1 fi # Define paths that will be used during this script. SCRIPT_DIR=`pwd` # Start creating a log file that will be used to record progress. LOG_FILE=`${MKTEMP}` BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'` echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define paths to all directories that we will access in this script. # These should all be absolute paths. BUILD_NUMBER_FILE="buildnumber.txt" REVISION_NUMBER_FILE="revision.txt" VERSION_NUMBER_FILE="version.txt" # Look at what is currently the latest weekly build to get information we need # to bootstrap this build. LAST_BUILD_DIR="${BUILDS_DIR}/latest" LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}` LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}` BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc` if test ${BUILD_NUMBER} -le 9 then BUILD_NUMBER_STR="00${BUILD_NUMBER}" else if test ${BUILD_NUMBER} -le 99 then BUILD_NUMBER_STR="0${BUILD_NUMBER}" else BUILD_NUMBER_STR="${BUILD_NUMBER}" fi fi echo "*** Build Number Information ***" >> "${LOG_FILE}" echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}" echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}" echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}" echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define information that we will use to access the repository. PRODUCT_URL="${SVN_URL}/PRODUCT" # Parse the contents of the PRODUCT file to get the version information. echo "*** Product Version Information ***" >> "${LOG_FILE}" PRODUCT_FILE=`${MKTEMP}` echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}" ${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}" SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2` MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2` POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2` VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2` VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}" VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}" ${RM} "${PRODUCT_FILE}" echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}" echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}" echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}" echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}" echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}" echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Define variables that will be used when sending the e-mail message. SENDER="opends@dev.java.net" SUBJECT="${PROD} OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}" # Create a new directory to hold the build. echo "*** Checking Out the Server ***" >> "${LOG_FILE}" BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}" if test -d "${BUILD_DIR}" then echo "ERROR: Target build directory ${BUILD_DIR} already exists" echo "ERROR: Aborting the weekly build attempt." exit 1 fi echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}" cd "${BUILD_DIR}" echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}" ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log" ${CHMOD} 0644 "${LOG_FILE}" echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}" # Check out the head revision from the repository. echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1 ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1 cd OpenDS REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'` echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Add information about the checked out revision to the log file. echo ${SVN} info >> "${LOG_FILE}" 2>&1 ${SVN} info >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # jp146654 :add path to OpenDMK cd ${BUILD_DIR}/OpenDS OLD_BUILDPROP_FILE=build.properties.origin NEW_BUILDPROP_FILE=build.properties echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1 echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1 cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin echo add new path : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1 ${CAT} ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE} echo >> ${LOG_FILE} echo >> ${LOG_FILE} # end jp146654 JAVA_HOME=/java/jdk5 export JAVA_HOME # Perform a build of the server using the "weekly" target. echo "*** Building the Server ***" >> "${LOG_FILE}" echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1 if test $? -eq 0 then STATUS="Successful" else STATUS="FAILED" fi echo "STATUS=${STATUS}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Create the Java Web Start Install Archive. ADDRESS="www.opends.org" export ADDRESS echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}" BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install" export BASE_PATH echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}" echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1 echo "" >> "${LOG_FILE}" # Symlink all of the appropriate files into place in the base build directory. #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" #${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" #${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install" #${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" ${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip" ${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war" ${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip" ${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install" ${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc" # Create MD5 digests of the appropriate files. echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5" ${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5" CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"` DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"` SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"` echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}" echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}" echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}" echo "" >> "${LOG_FILE}" # Write the build number and revision numbers to text files. echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}" echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}" echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}" # Get a log of changes since the last build. echo "*** Getting changelog data ***" >> "${LOG_FILE}" LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc` echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1 ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1 echo "" >> "${LOG_FILE}" #If this is a sanity check, exit if ${TEST} ${SANITY} -eq 1 then echo "Sanity check done." exit 1 fi # Create an index.html in the build directory. ${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML <!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd"> <HTML> <HEAD> <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif"> <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css"> <STYLE> tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 } </STYLE> </HEAD> <BODY> <TABLE BORDER="0" CELLPADDING="10"> <TR STYLE="background-color:#ffffff"> <TD VALIGN="MIDDLE"> <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57"> </TD> <TD VALIGN="MIDDLE"> <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1> </TD> </TR> <TR> <TD>Weekly Build Number</TD> <TD>${BUILD_NUMBER}</TD> </TR> <TR> <TD>Subversion Revision Number</TD> <TD>${REVISION_NUMBER}</TD> </TR> <TR> <TD>QuickSetup Installer</TD> <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD> </TR> <TR> <TD>Core Server Zip File</TD> <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD> </TR> <TR> <TD>Core Server MD5 Checksum</TD> <TD>${CORE_SERVER_MD5}</TD> </TR> <TR> <TD>DSML Gateway WAR File</TD> <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD> </TR> <TR> <TD>DSML Gateway MD5 Checksum</TD> <TD>${DSML_GATEWAY_MD5}</TD> </TR> <TR> <TD>src.zip Server Source Archive</TD> <TD><A HREF="src.zip">src.zip</A></TD> </TR> <TR> <TD>src.zip MD5 Checksum</TD> <TD>${SRC_ZIP_MD5}</TD> </TR> <TR> <TD>Javadoc Documentation</TD> <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD> </TR> <TR> <TD>Changelog</TD> <TD><A HREF="changes.log">changes.log</A></TD> </TR> <TR> <TD>Build Log</TD> <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD> </TR> </TABLE> <BR> <A HREF="/promoted-builds/">See All Weekly Builds</A><BR> <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR> <!-- Omniture --> <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/> </BODY> </HTML> ENDOFHTML # Create a "candidate" symbolic link to this build. ${RM} -f "${BUILDS_DIR}/candidate" ${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate" # Create a temporary file to use for the e-mail message. BODY_FILE=`${MKTEMP}` echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE} #echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE} # Send the message and delete the temporary file. ${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \ --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \ --attach "${LOG_FILE}" ${RM} "${BODY_FILE}"