Skip to content
This repository has been archived by the owner on Jan 30, 2019. It is now read-only.

Commit

Permalink
setup Jenkins job
Browse files Browse the repository at this point in the history
  • Loading branch information
yuHe1 committed Jul 14, 2017
1 parent dfef4bb commit 81092b2
Show file tree
Hide file tree
Showing 4 changed files with 368 additions and 2 deletions.
2 changes: 2 additions & 0 deletions wsit/hudson/cts-smoke.sh
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ _unzip $GF_ZIP $GF_WORK_DIR

if [ -d "$GF_WORK_DIR/glassfish4" ]; then
SERVER_DIR=glassfish4
elif [ -d "$GF_WORK_DIR/glassfish5" ]; then
SERVER_DIR=glassfish5
else
SERVER_DIR=glassfish3
fi
Expand Down
2 changes: 2 additions & 0 deletions wsit/hudson/devtests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ _unzip $GF_ZIP $GF_WORK_DIR

if [ -d "$GF_WORK_DIR/glassfish4" ]; then
SERVER_DIR=glassfish4
elif [ -d "$GF_WORK_DIR/glassfish5" ]; then
SERVER_DIR=glassfish5
else
SERVER_DIR=glassfish3
fi
Expand Down
351 changes: 351 additions & 0 deletions wsit/hudson/jenkins.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,351 @@
#!/bin/bash -ex
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common Development
# and Distribution License("CDDL") (collectively, the "License"). You
# may not use this file except in compliance with the License. You can
# obtain a copy of the License at
# https://oss.oracle.com/licenses/CDDL+GPL-1.1
# or LICENSE.txt. See the License for the specific
# language governing permissions and limitations under the License.
#
# When distributing the software, include this License Header Notice in each
# file and include the License file at LICENSE.txt.
#
# GPL Classpath Exception:
# Oracle designates this particular file as subject to the "Classpath"
# exception as provided by Oracle in the GPL Version 2 section of the License
# file that accompanied this code.
#
# Modifications:
# If applicable, add the following below the License Header, with the fields
# enclosed by brackets [] replaced by your own identifying information:
# "Portions Copyright [year] [name of copyright owner]"
#
# Contributor(s):
# If you wish your version of this file to be governed by only the CDDL or
# only the GPL Version 2, indicate your decision by adding "[Contributor]
# elects to include this software in this distribution under the [CDDL or GPL
# Version 2] license." If you don't indicate a single choice of license, a
# recipient has the option to distribute your version of this file under
# either the CDDL, the GPL Version 2 or to extend the choice of license to
# its licensees as provided above. However, if you add GPL Version 2 code
# and therefore, elected the GPL Version 2 license, then the option applies
# only if the new code is made subject to such option by the copyright
# holder.
#

#set env like CTS_URL [required] , MVN_SETTINGS[optional] , GF_URL [optional]
METRO_MAJOR_VERSION=2.4.0
METRO_REVISION=$BRANCH_NAME
export WORK_DIR=$WORKSPACE
echo "WORK_DIR: $WORK_DIR"
export GF_SVN_ROOT=$WORK_DIR/glassfish
export DTEST_SVN_ROOT=$GF_SVN_ROOT/appserver/tests/appserv-tests
export METRO_SVN_ROOT=$WORK_DIR/metro-wsit


cd $METRO_SVN_ROOT/wsit/hudson/
source common.sh
if [ -z "$M2_LOCAL_REPO" ]; then
export M2_LOCAL_REPO=$WORK_DIR/.repository
fi

#PROXY
set_proxy

export ANT_OPTS=" $JAVA_PROXY_PROP"
export MAVEN_OPTS="-Dmaven.repo.local=$M2_LOCAL_REPO -Dmaven.javadoc.skip=true $JAVA_PROXY_PROP"

source setenv.sh

set_common
print_env

#prepare git source
pushd $METRO_SVN_ROOT
git reset --hard
git clean -fd
popd


if [! -d "$GF_SVN_ROOT" ]; then
git init $GF_SVN_ROOT
git clone [email protected]:javaee/glassfish.git
fi

pushd $GF_SVN_ROOT
git reset --hard
git clean -fdx
popd


#fallback to defaults if needed
if [ -z "$MVN_REPO_URL" ]; then
MVN_REPO_URL="https://maven.java.net/content/groups/staging"
fi

if [ -z "$METRO_SVN_REPO" ]; then
METRO_SVN_REPO=$METRO_FORKED_REPO
fi

pushd $WORK_DIR

#CLEAN UP
rm -rf $GF_WORK_DIR
rm -rf $METRO_WORK_DIR
rm -f *.patch
rm -f *.zip

if [ ! -f "$GF_ZIP" -a ! -z "$GF_URL" ]; then
wget -N $GF_URL
export GF_ZIP=$WORK_DIR/${GF_URL##*/}
fi

echo "METRO_VERSION: $METRO_VERSION"
echo "METRO_REVISION: $METRO_REVISION"
echo "CTS_ZIP: $CTS_ZIP"

if [[ ! -z $METRO_REVISION ]]; then #generate a temp metro version
DATESTAMP=`date +%y%m%d.%H%M`
BUILD_NUMBER=b${DATESTAMP}
METRO_VERSION=$METRO_MAJOR_VERSION-$BUILD_NUMBER
fi

METRO_BUNDLE="org/glassfish/metro/metro-standalone"
if [ -z "$METRO_VERSION" ]; then
LATEST_METRO_BUILD=`curl -s -k $MVN_REPO_URL/$METRO_BUNDLE/maven-metadata.xml | grep "<version>$METRO_MAJOR_VERSION-b[0-9]" | cut -d ">" -f2,2 | cut -d "<" -f1,1 | tail -1 | cut -d "b" -f2,2`
METRO_VERSION="$METRO_MAJOR_VERSION-b$LATEST_METRO_BUILD"
echo "Latest metro build: " $LATEST_METRO_BUILD
echo "Metro version: " $METRO_VERSION
fi

if [ -z "$METRO_REVISION" ]; then
METRO_URL="$MVN_REPO_URL/$METRO_BUNDLE/$METRO_VERSION/metro-standalone-$METRO_VERSION.zip"
_wget $METRO_URL
export METRO_ZIP=$WORK_DIR/${METRO_URL##*/}
fi

if [ ! -f "$CTS_ZIP" ]; then
wget $CTS_URL
export CTS_ZIP=$WORK_DIR/${CTS_URL##*/}
fi
popd

echo "GF_ZIP: $GF_ZIP"
echo "METRO_ZIP: $METRO_ZIP"
echo "CTS_ZIP: $CTS_ZIP"
echo "Metro SVN root: $METRO_SVN_ROOT"

echo "Preparing WORKDIR:"
#delete old
pushd $WORK_DIR
for dir in "test_results" ".repository"
do
if [ -e "$dir" ] ; then
echo "Removing $dir"
rm -rf $dir
fi
done
popd

cd $WORK_DIR
if [ -z "$METRO_URL" ]; then
if [ ! -z "$METRO_REVISION" ]; then
rm -rf $METRO_SVN_ROOT || true
echo "Checking out Metro sources using revision: $METRO_REVISION"
git clone $METRO_SVN_REPO $METRO_SVN_ROOT
pushd $METRO_SVN_ROOT/wsit/
git checkout $METRO_REVISION
fi
JAXB_VERSION=`mvn -s $MVN_SETTINGS dependency:tree -f metro-runtime/metro-runtime-api/pom.xml -Dincludes=com.sun.xml.bind:jaxb-impl | grep com.sun.xml.bind:jaxb-impl | tail -1 | cut -f4 -d':'`
JAXB_API_VERSION=`mvn -s $MVN_SETTINGS dependency:tree -Dincludes=javax.xml.bind:jaxb-api | grep javax.xml.bind:jaxb-api | tail -1 | cut -f4 -d':'`
SOAP_API_VERSION=`mvn -s $MVN_SETTINGS dependency:tree -Dincludes=javax.xml.soap:javax.xml.soap-api | grep javax.xml.soap:javax.xml.soap-api | tail -1 | cut -f4 -d':'`
MIMEPULL_VERSION=`mvn -s $MVN_SETTINGS dependency:tree -Dincludes=org.jvnet.mimepull:mimepull | grep org.jvnet.mimepull:mimepull | tail -1 | cut -f4 -d':'`
echo "Setting project version in sources to new promoted version $METRO_VERSION"
#mvn versions:set -Pstaging -DnewVersion="$METRO_VERSION" -f boms/bom/pom.xml -s /net/bat-sca/repine/export2/hudson/tools/maven-3.0.3/settings-nexus.xml
./hudson/changeVersion.sh $METRO_MAJOR_VERSION-SNAPSHOT $METRO_VERSION pom.xml
popd

pushd $GF_SVN_ROOT/appserver
echo "Updating webservices.version property in GlassFish main pom.xml to $METRO_VERSION"
perl -i -pe "s|<webservices.version>.*</webservices.version>|<webservices.version>$METRO_VERSION</webservices.version>|g" pom.xml
echo "Updating jaxb.version property in GlassFish main pom.xml to $JAXB_VERSION"
perl -i -pe "s|<jaxb.version>.*</jaxb.version>|<jaxb.version>$JAXB_VERSION</jaxb.version>|g" pom.xml
echo "Updating jaxb-api.version property in GlassFish main pom.xml to $JAXB_API_VERSION"
perl -i -pe "s|<jaxb-api.version>.*</jaxb-api.version>|<jaxb-api.version>$JAXB_API_VERSION</jaxb-api.version>|g" pom.xml
echo "Updating javax.xml.soap-api.version property in GlassFish main pom.xml to $SOAP_API_VERSION"
perl -i -pe "s|<javax.xml.soap-api.version>.*</javax.xml.soap-api.version>|<javax.xml.soap-api.version>$SOAP_API_VERSION</javax.xml.soap-api.version>|g" pom.xml


pushd $GF_SVN_ROOT/nucleus
echo "Updating mimepull.version property in GlassFish nucleus-parent pom.xml to $MIMEPULL_VERSION"
perl -i -pe "s|<mimepull.version>.*</mimepull.version>|<mimepull.version>$MIMEPULL_VERSION</mimepull.version>|g" pom.xml
popd

echo "Prepared patch:"
git diff pom.xml ../nucleus/pom.xml packager/resources/pkg_conf.py
echo "back-uping original pom.xml"
cp pom.xml pom.xml.orig
echo "Adding staging repository definition to GlassFish's pom.xml"
perl -i -pe "s|</project>|<repositories><repository><id>staging.java.net</id><url>$MVN_REPO_URL</url></repository></repositories></project>|g" pom.xml
popd

echo -e "\nBuilding projects:"
for project in "$METRO_SVN_ROOT/wsit/" "$GF_SVN_ROOT"
do
echo "Building $project"
pushd $project
# mvn -s $MVN_SETTINGS -U -C -DskipTests=true clean install
mvn -s $MVN_SETTINGS -U -C clean install
popd
echo "$project done"
done
echo -e "\nDone building projects\n"

pushd $GF_SVN_ROOT/appserver
echo "Restoring GlassFish's pom.xml"
rm -f pom.xml
mv pom.xml.orig pom.xml
popd
fi

export RESULTS_DIR=$WORK_DIR/test_results
export DEVTESTS_RESULTS_DIR=$RESULTS_DIR/devtests
export CTS_RESULTS_DIR=$RESULTS_DIR/cts-smoke

pushd "$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

mkdir -p $RESULTS_DIR
export ALL=$RESULTS_DIR/test-summary.txt
rm -f $ALL || true
touch $ALL
echo "Tested configuration:" >> $ALL
echo -e "\nJAVA_HOME: $JAVA_HOME" >> $ALL

if [ -z "$GF_URL" ]; then
pushd $GF_SVN_ROOT
echo "GlassFish: `git status $GF_SVN_ROOT`" >> $ALL
popd
else
echo "GlassFish: $GF_URL" >> $ALL
fi
if [ -z "$METRO_URL" ]; then
pushd $METRO_SVN_ROOT
echo "Metro: `git status`\n" >> $ALL
popd
else
echo "Metro: $METRO_URL\n" >> $ALL
fi


pushd $METRO_SVN_ROOT/wsit/hudson/

./cts-smoke.sh -g $GF_ZIP -c $CTS_ZIP
mkdir -p $CTS_RESULTS_DIR
mv $WORK_DIR/test_results-cts/* $CTS_RESULTS_DIR
rm -rf $WORK_DIR/test_results-cts
cp $GF_WORK_DIR/glassfish5/glassfish/domains/domain1/logs/server.log* $CTS_RESULTS_DIR
mv $WORK_DIR/test-cts-smoke.log.txt $RESULTS_DIR
popd

if [ ! "`grep 'Failed.' $CTS_RESULTS_DIR/text/summary.txt`" ]; then
echo -e "\nCTS-smoke tests: OK\n" >> $ALL
else
echo -e "\nCTS-smoke tests: `grep -c 'Failed.' $CTS_RESULTS_DIR/text/summary.txt` failure(s)" >> $ALL
grep "Failed." $CTS_RESULTS_DIR/text/summary.txt >> $ALL
cat $ALL
# exit 1
fi
if [ "`grep 'BUILD FAILED' $RESULTS_DIR/test-cts-smoke.log.txt`" ]; then
echo "CTS-smoke tests: build failure" >> $ALL
cat $ALL
# exit 1
fi

pushd $METRO_SVN_ROOT/wsit/hudson/

for QL_TEST_PROFILE in "all"
do
export QL_RESULTS_DIR=$RESULTS_DIR/quick_look-$QL_TEST_PROFILE
./quicklook.sh -g $GF_ZIP -p $QL_TEST_PROFILE
mkdir -p $QL_RESULTS_DIR
pushd $GF_SVN_ROOT/appserver/tests/quicklook
cp quicklook_summary.txt *.output $QL_RESULTS_DIR
popd
cp $GF_WORK_DIR/glassfish5/glassfish/domains/domain1/logs/server.log* $QL_RESULTS_DIR
mv $WORK_DIR/test-quicklook-$QL_TEST_PROFILE.log.txt $RESULTS_DIR

if [ "`grep -E '.*Failures: 0.*' $QL_RESULTS_DIR/quicklook_summary.txt`" ]; then
echo -e "\nQuickLook tests: OK\n" >> $ALL
else
echo -e "\nQuickLook tests: `awk '/,/ { print $6 }' $QL_RESULTS_DIR/quicklook_summary.txt | cut -d ',' -f 1` failure(s)" >> $ALL
grep "FAILED:" $RESULTS_DIR/test-quicklook-$QL_TEST_PROFILE.log.txt >> $ALL
cat $ALL
exit 1
fi

if [ "`grep -E '.*Configuration Failures:.*' $QL_RESULTS_DIR/quicklook_summary.txt`" ]; then
echo -e "\nQuickLook tests: `awk '/,/ { print $3 }' $QL_RESULTS_DIR/quicklook_summary.txt | cut -d ',' -f 1 | cut -d ':' -f 2` configuration failure(s)" >> $ALL
grep "FAILED CONFIGURATION:" $RESULTS_DIR/test-quicklook-$QL_TEST_PROFILE.log.txt >> $ALL
echo -e "\nQuickLook tests: `awk '/,/ { print $8 }' $QL_RESULTS_DIR/quicklook_summary.txt | cut -d ',' -f 1` skip(s)" >> $ALL
grep "SKIPPED:" $RESULTS_DIR/test-quicklook-$QL_TEST_PROFILE.log.txt >> $ALL
cat $ALL
exit 1
fi

if [ "`grep 'BUILD FAILURE' $RESULTS_DIR/test-quicklook-$QL_TEST_PROFILE.log.txt`" ]; then
echo "QuickLook tests ($QL_TEST_PROFILE): build failure" >> $ALL
cat $ALL
exit 1
fi
done

#Disable devtest due to test has not been moved to app-test and build issue.
# pushd $METRO_SVN_ROOT/wsit/hudson/
# ./devtests.sh -g $GF_ZIP
# mkdir -p $DEVTESTS_RESULTS_DIR
# pushd $DTEST_SVN_ROOT
# cp test_results.* $DEVTESTS_RESULTS_DIR
# pushd devtests/webservice
# cp webservice.output $DEVTESTS_RESULTS_DIR/webservice.output.txt
# #cp count.txt $DEVTESTS_RESULTS_DIR
# popd
# popd
# cp $GF_WORK_DIR/glassfish5/glassfish/domains/domain1/logs/server.log* $DEVTESTS_RESULTS_DIR
# mv $WORK_DIR/test-devtests.log.txt $RESULTS_DIR
#
# if [ "`grep 'Java Result: -1' $RESULTS_DIR/test-devtests.log.txt`" ]; then
# #TODO: break the build after fixing appserv-tests/devtests/webservice/ejb_annotations/ejbwebservicesinwar-2
# echo -e "\ndevtests tests: TODO - fix devtests/webservice/ejb_annotations/ejbwebservicesinwar-2" >> $ALL
# fi
# if [ "`grep -E 'FAILED=( )+0' $DEVTESTS_RESULTS_DIR/count.txt`" ]; then
# echo -e "\ndevtests tests: OK\n" >> $ALL
# else
# echo -e "\ndevtests tests: `awk '/FAILED=( )+/ { print $2 }' $DEVTESTS_RESULTS_DIR/count.txt` failure(s)" >> $ALL
# grep ": FAIL" $DEVTESTS_RESULTS_DIR/webservice.output.txt >> $ALL
# cat $ALL
# # exit 1
# fi
# if [ "`grep 'BUILD FAILED' $RESULTS_DIR/test-devtests.log.txt`" ]; then
# echo "devtests tests: build failure" >> $ALL
# cat $ALL
# # exit 1
# fi
if [ -z "$METRO_REVISION" ]; then #create patch only for public metro
pushd $GF_SVN_ROOT

git config user.name $JOB_GIT_USERNAME
git config user.email $JOB_GIT_EMAIL

git add pom.xml appserver/pom.xml nucleus/pom.xml
git commit -m "PATCH with "+$METRO_VERSION
git format-patch -1
git reset --hard HEAD~1
mv *.patch $WORKDIR
echo "Patch created!"
fi
Loading

0 comments on commit 81092b2

Please sign in to comment.