blob: e0fe781bf7a10b4e774e0ee0bd7323534ac609ee [file] [log] [blame]
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[ -n "$pop_url" ] || exit 101
if [ -z "$pop_build_info" ]; then
pop_build_info="nbbuild/build/build_info"
fi
[ -n "$pop_job" ] || exit 103
[ -n "$push_url" ] || exit 113
[ -n "$push_username" ] || exit 114
testresult() {
if [ -z "$4" ]; then
FAILURES="0"
else
FAILURES="$4"
fi
FILE="$1/TEST-hg.$2.xml"
echo '<?xml version="1.0" encoding="UTF-8" ?>' >$FILE
echo '<testsuite errors="0" failures="'$FAILURES'" name="hg.'$2'" tests="1" time="1">' >>$FILE
echo ' <properties>' >>$FILE
echo ' </properties>' >>$FILE
echo ' <testcase classname="hg.'$2'" name="hg.'$2'" time="1">' >>$FILE
if [ "$FAILURES" -gt "0" ]; then
echo ' <failure message="Failed"/>' >>$FILE
fi
echo ' </testcase>' >>$FILE
echo ' <system-out><![CDATA[' >>$FILE
echo "$3" >>$FILE
echo ']]></system-out>' >>$FILE
echo ' <system-err></system-err>' >>$FILE
echo '</testsuite>' >>$FILE
}
testmodule() {
if ant $ANT_PARAM -f $1/build.xml test-unit -Dtest-unit-sys-prop.ignore.random.failures=true; then
echo Test OK: $1
else
echo $1 >>$RESULT
exit 5
fi
}
rollback() {
EXIT="$?"
if [ -n "$BASETIP" ]; then
echo "Script failed with exitcode $EXIT rolling back to $BASETIP"
hg update -C
hg --config extensions.mq= strip -n "$BASETIP"
hg pull -r "$BASETIP"
else
echo "No rollback, exitcode $EXIT"
fi
}
if [ -z "$TMP" ]; then
TMP="/tmp"
fi
ANT_OPTS="-Xmx512m -XX:MaxPermSize=128m"
export ANT_OPTS
BASETIP=`hg log -r . --template '{node}'`
trap rollback EXIT
hg up -C tip
hg --config extensions.purge= clean --all
TESTDIR="nbbuild/build/test/results/"
mkdir -p $TESTDIR
mkdir -p "nbbuild/build"
STATUS="nbbuild/build/build-info"
curl -H "Cache-Control: no-cache" $pop_job/buildStatus -D "$STATUS"
cat "$STATUS"
echo Getting Build Info
HGINFO=`curl -vvvv -H "Cache-Control: no-cache" $pop_job/lastStableBuild/artifact/$pop_build_info`
echo Build info: $HGINFO
testresult "$TESTDIR" "build.info" "$HGINFO"
[ -n "$HGINFO" ] || exit 1
HGID=`echo "$HGINFO" | grep "Hg ID"`
echo Last build_info line: "$HGID"
HGTIP=`echo "$HGID" | cut -f 2 -d ":" | while read X; do echo $X; done`
echo Last OK revision: "$HGTIP"
hg pull -r "$HGTIP" "$pop_url" || exit 5
echo 'hg parent:'
hg parent
if [ `hg heads --template '{node|short}\n' | wc -l` = 1 ]
then
hg up || exit 6
else
if hg --config ui.merge=internal:merge --config ui.interactive=1 merge "$HGTIP" < /dev/null; then
echo Merge OK.
else
echo Merge failed.
hg heads
exit 7
fi
hg ci -u "$push_username"@netbeans.org -m "Merge of $pop_url" || exit 8
fi
HGOUT=`hg out $push_url`
testresult "$TESTDIR" "outgoing.changes" "$HGOUT"
OUT_COUNT=`hg out --no-merges --template 'change: {node|short}\n' $push_url | grep '^change: ' | wc -l`
if [ "$OUT_COUNT" -gt 0 ]; then
echo "Let the build start. There are $OUT_COUNT outgoing changes."
else
echo "No outgoing changes. No reason to do build."
echo >"nbbuild/no-outgoing-changes-no-build.zip"
if egrep "Location:.*/blue(_anime)?[.]" "$STATUS"; then
echo Build seems to be stable
testresult "$TESTDIR" "check.build.stable" "`cat $STATUS`"
else
echo Build is not stable
testresult "$TESTDIR" "check.build.stable" "`cat $STATUS`" "1"
echo >"nbbuild/downstream-builder-not-stable-no-push.zip"
fi
exit 0
fi
. `dirname $0`/round-robin-build
if dobuild; then
for i in 1 2 3 4 5 6 7 8 9 10; do
if hg push -f "$push_url"; then
echo "Build and push successful"
unset BASETIP
exit 0
fi
done
echo "Push failed"
exit 1
else
echo "Failure, rolling back own commits to $BASETIP"
exit 1
fi