mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

jpikus
27.15.2009 3ce35cc6f1201b1285d71aeda8ec16ff12a30f55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
#!/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}