[PATCH] Release script: build binaries for publication when tagging and slightly mavenize the whole process
Wald Commits
scm-commit at wald.intevation.org
Fri Dec 19 20:50:33 CET 2014
# HG changeset patch
# User Tom Gottfried <tom at intevation.de>
# Date 1419018629 -3600
# Node ID e3f032870e7a6be785fb3d5aac5fcabff4e4c891
# Parent 48cce699e387c4aff46f9870991596721e9d6385
Release script: build binaries for publication when tagging and slightly mavenize the whole process.
diff -r 48cce699e387 -r e3f032870e7a contrib/make_flys_release/README
--- a/contrib/make_flys_release/README Fri Dec 19 19:32:05 2014 +0100
+++ b/contrib/make_flys_release/README Fri Dec 19 20:50:29 2014 +0100
@@ -27,6 +27,9 @@
Default-Konfigurations-Dateien zu überschreiben. Die Zeichenkette
'D4E_VERSION' wird in den so gegebenen Konfigurationsdateien durch
die beim Aufruf des Skriptes angegebene Version ersetzt.
+CLIENT_CONF Pfad zu einer Datei, mit der
+ gwt-client/src/main/java/org/dive4elements/river/client/client/config.xml
+ ersetzt wird.
Prozess:
========
diff -r 48cce699e387 -r e3f032870e7a contrib/make_flys_release/make_release.sh
--- a/contrib/make_flys_release/make_release.sh Fri Dec 19 19:32:05 2014 +0100
+++ b/contrib/make_flys_release/make_release.sh Fri Dec 19 20:50:29 2014 +0100
@@ -38,9 +38,8 @@
Default: $DEFAULT_WD
-t Tag the current default branch as "VERSION"
-o, --oracle Release is for oracle.
- Suitable jar-files for JDBC driver and
- hibernate-spatial have to be given with the
- environment variables ORACLE_JDBC and ORACLE_HIBERNATE
+ Suitable jar-file for JDBC driver has to be given with
+ the environment variable ORACLE_JDBC
VERSION must be in the format MAYOR.MINOR.PATCH or default
EOF
exit 0
@@ -110,12 +109,12 @@
echo "Updating sources / Reverting changes"
cd $FLYS_SOURCE_DIR
for repo in $REPOS; do
- cd $repo && hg pull && hg revert -a && hg up && cd $FLYS_SOURCE_DIR
+ cd $repo && hg purge && hg revert -a && hg pull -u && cd -
done;
fi
if [ "$DO_TAG" = "TRUE" ]; then
- echo "Tagging version $VERSION"
+ echo "INFO: Tagging version $VERSION"
for repo in $REPOS; do
cd $repo
CHANGESET=$(hg log -l1 |head -1 | awk -F: '{print $3}')
@@ -149,11 +148,60 @@
cd $FLYS_SOURCE_DIR
done
-rm -rf "$WORK_DIR/server" "$WORK_DIR/client"
+
+if [ ! -f $FLYS_SOURCE_DIR/OpenLayers-2.11.tar.gz ]; then
+ echo "INFO: download OpenLayers-2.11 for client"
+ cd $FLYS_SOURCE_DIR
+ wget "https://github.com/openlayers/openlayers/releases/download/release-2.11/OpenLayers-2.11.tar.gz"
+ tar xvfz OpenLayers-2.11.tar.gz
+ # TODO: Remove more superfluous OpenLayers stuff.
+ rm -rf OpenLayers-2.11/doc
+ rm -rf OpenLayers-2.11/tests
+ rm -rf OpenLayers-2.11/examples
+ cd $WORK_DIR
+fi
+cp -r $FLYS_SOURCE_DIR/OpenLayers-2.11 \
+ $FLYS_SOURCE_DIR/river/gwt-client/src/main/webapp/
+
+
+echo "INFO: Downloading smartGWT"
+mvn com.isomorphic:isc-maven-plugin:install -Dproduct=SMARTGWT -Dlicense=LGPL \
+ -DbuildNumber=4.1p -DbuildDate=2014-12-13 -Dworkdir=$WORK_DIR
+
+echo "INFO: compile sources"
+mvn -f $FLYS_SOURCE_DIR/framework/pom.xml clean compile install
+mvn -f $FLYS_SOURCE_DIR/river/backend/pom.xml clean compile install
+mvn -f $FLYS_SOURCE_DIR/river/artifacts/pom.xml clean compile
+mvn -f $FLYS_SOURCE_DIR/http-client/pom.xml clean compile install
+# gwt-client has to be compiled later to allow custom CLIENT_CONF
+
+echo "INFO: create h2 database for artifacts and datacage"
+cd $FLYS_SOURCE_DIR/river/artifacts
+rm -rf artifactsdb datacagedb
+$FLYS_SOURCE_DIR/framework/artifact-database/bin/createArtifacts.sh
+$FLYS_SOURCE_DIR/river/artifacts/bin/createDatacage.sh
+cd -
+
+echo "INFO: download WSPLGEN"
cd $WORK_DIR
-mkdir -p "$WORK_DIR/server/bin/lib/own"
-mkdir "$WORK_DIR/server/shapefiles"
-mkdir "$WORK_DIR/client"
+wget \
+ https://wald.intevation.org/frs/download.php/1496/wsplgen-linux-64bit-static.gz \
+ https://wald.intevation.org/frs/download.php/1498/wsplgen-linux-32bit-static.gz
+gunzip wsplgen-linux-64bit-static.gz wsplgen-linux-32bit-static.gz
+chmod +x wsplgen-linux-*
+cp wsplgen-linux-32bit-static $FLYS_SOURCE_DIR/river/artifacts/bin/wsplgen
+cd -
+
+if [ "$DO_TAG" = "TRUE" ]; then
+ echo "INFO: Building packages for publication"
+ cd $FLYS_SOURCE_DIR/river/artifacts
+ mvn package assembly:single
+ mv target/river-artifacts-1.0-SNAPSHOT-bin.tar.bz2 \
+ $WORK_DIR/d4e-river-$VERSION.tar.bz2 && cd ..
+ cd gwt-client && mvn clean compile package
+ mv target/gwt-client-1.0-SNAPSHOT.war \
+ $WORK_DIR/d4e-river-$VERSION.war && cd ..
+fi
echo "INFO: Preparing configuration of web client"
@@ -177,135 +225,71 @@
$FLYS_SOURCE_DIR/river/gwt-client/src/main/java/org/dive4elements/river/client/client/config.xml
fi
-if [ ! -f $FLYS_SOURCE_DIR/OpenLayers-2.11.tar.gz ]; then
- echo "INFO: download OpenLayers-2.11 for client"
- cd $FLYS_SOURCE_DIR
- wget "https://github.com/openlayers/openlayers/releases/download/release-2.11/OpenLayers-2.11.tar.gz"
- tar xvfz OpenLayers-2.11.tar.gz
- # TODO: Remove more superfluous OpenLayers stuff.
- rm -rf OpenLayers-2.11/doc
- rm -rf OpenLayers-2.11/tests
- rm -rf OpenLayers-2.11/examples
- cd $WORK_DIR
+if [ -n $DGM_PATH ]; then
+ sed -i -e "s@<dgm-path>.*</dgm-path>@<dgm-path>${DGM_PATH}</dgm-path>@g" \
+ $FLYS_SOURCE_DIR/river/artifacts/doc/conf/conf.xml
fi
-cp -r $FLYS_SOURCE_DIR/OpenLayers-2.11 $FLYS_SOURCE_DIR/river/gwt-client/src/main/webapp/
-echo "INFO: Downloading smartGWT"
-mvn com.isomorphic:isc-maven-plugin:install -Dproduct=SMARTGWT -Dlicense=LGPL \
- -DbuildNumber=4.1p -DbuildDate=2014-12-13 -Dworkdir=$WORK_DIR
+if [ -n $WIKI_URL ]; then
+ sed -i -e "s@<help-url>http://example.com</help-url>@<help-url>${WIKI_URL}</help-url>@g" \
+ $FLYS_SOURCE_DIR/river/artifacts/doc/conf/conf.xml
+fi
+
+if [ -d $SERVER_CONF ]; then
+ echo "INFO: copy custom server configuration to target destination"
+ cp -R $SERVER_CONF/* $FLYS_SOURCE_DIR/river/artifacts/doc/conf/
+ for file in `find $FLYS_SOURCE_DIR/river/artifacts/doc/conf -type f`; do
+ sed -i -e "s at D4E_VERSION@${VERSION}@g" $file
+ done
+fi
+
echo "INFO: compile and build sources"
-mvn -f $FLYS_SOURCE_DIR/framework/pom.xml clean compile package install
-mvn -f $FLYS_SOURCE_DIR/river/backend/pom.xml clean compile package install
-mvn -f $FLYS_SOURCE_DIR/river/artifacts/pom.xml clean compile package dependency:copy-dependencies install
-mvn -f $FLYS_SOURCE_DIR/http-client/pom.xml clean compile package install
-mvn -f $FLYS_SOURCE_DIR/river/gwt-client/pom.xml clean compile package
-
-# remove unused Version of JFreeChart (it's a dependency of JasperReports
-# that prevents diagram generation in D4E river)
-rm $FLYS_SOURCE_DIR/river/artifacts/target/dependency/jfreechart-1.0.12.jar
-
-echo "INFO: copy dependencies and libs"
-cp $FLYS_SOURCE_DIR/framework/artifact-database/target/artifact-database-1.0-SNAPSHOT.jar $WORK_DIR/server/bin/lib/own/
-cp $FLYS_SOURCE_DIR/framework/artifacts/target/artifacts-1.0-SNAPSHOT.jar $WORK_DIR/server/bin/lib/own/
-cp $FLYS_SOURCE_DIR/framework/artifacts-common/target/artifacts-common-1.0-SNAPSHOT.jar $WORK_DIR/server/bin/lib/own/
-cp $FLYS_SOURCE_DIR/river/backend/target/river-backend-1.0-SNAPSHOT.jar $WORK_DIR/server/bin/lib/own/
-cp $FLYS_SOURCE_DIR/river/artifacts/target/river-artifacts-1.0-SNAPSHOT.jar $WORK_DIR/server/bin/lib/own/
-cp $FLYS_SOURCE_DIR/river/gwt-client/target/gwt-client-1.0-SNAPSHOT.war $WORK_DIR/client/flys-${VERSION}.war
-cp $FLYS_SOURCE_DIR/river/artifacts/target/dependency/* $WORK_DIR/server/bin/lib/
-
-echo "INFO: copy scripts and libraries to target destination"
-cp ${FLYS_SOURCE_DIR}/river/artifacts/bin/run.sh $WORK_DIR/server/bin/
-cp ${SCRIPT_DIR}/libs/* $WORK_DIR/server/bin/lib/
-
-echo "INFO: download WSPLGEN"
-wget https://wald.intevation.org/frs/download.php/1496/wsplgen-linux-64bit-static.gz
-gunzip wsplgen-linux-64bit-static.gz
-echo "16d60047aa114d69e9435dbbe56b6981b4e1c445 wsplgen-linux-64bit-static" | \
- sha1sum -c
-mv wsplgen-linux-64bit-static $WORK_DIR/server/bin/wsplgen
-chmod +x $WORK_DIR/server/bin/wsplgen
+cp $WORK_DIR/wsplgen-linux-64bit-static \
+ $FLYS_SOURCE_DIR/river/artifacts/bin/wsplgen
if [ "$BUILD_ORACLE" = "TRUE" ]; then
- echo "INFO: remove PostgreSQL and PostGIS libraries"
- rm $WORK_DIR/server/bin/lib/postg*
- rm $WORK_DIR/server/bin/lib/hibernate-spatial-postgis*
if [ ! -f $ORACLE_JDBC ]; then
echo "Could not find oracle jdbc in $ORACLE_JDBC"
echo "Please make sure that the ORACLE_JDBC variable is set correctly"
exit 1
fi
- if [ ! -f $ORACLE_HIBERNATE ]; then
- echo "Could not find hibernate-spatial-oracle in $ORACLE_HIBERNATE"
- echo "Please make sure that the ORACLE_HIBERNATE variable is set correctly"
- exit 1
- fi
- cp $ORACLE_HIBERNATE $ORACLE_JDBC $WORK_DIR/server/bin/lib/
+ mvn install:install-file -DgroupId=ojdbc -DartifactId=ojdbc \
+ -Dversion=0 -Dpackaging=jar -Dfile=$ORACLE_JDBC -DgeneratePom=true
+ mvn -f $FLYS_SOURCE_DIR/river/backend/pom-oracle.xml clean compile install
+ mvn -f $FLYS_SOURCE_DIR/river/artifacts/pom-oracle.xml \
+ package assembly:single
else
- echo "INFO: remove Oracle libraries"
- rm -f $WORK_DIR/server/bin/lib/hibernate-spatial-oracle-1.1.jar
- rm -f $WORK_DIR/server/bin/lib/ojdbc*
+ mvn -f $FLYS_SOURCE_DIR/river/artifacts/pom.xml package assembly:single
fi
+mvn -f $FLYS_SOURCE_DIR/river/gwt-client/pom.xml clean compile package
-echo "INFO: copy default server configuration to target destination"
-cp -R $FLYS_SOURCE_DIR/river/artifacts/doc/conf $WORK_DIR/server/
-
-if [ -n $DGM_PATH ]; then
- sed -i -e "s@<dgm-path>/path/to/rivers/</dgm-path>@<dgm-path>${DGM_PATH}</dgm-path>@g" \
- $WORK_DIR/server/conf/conf.xml
-fi
-
-if [ -n $WIKI_URL ]; then
- sed -i -e "s@<help-url>http://example.com</help-url>@<help-url>${WIKI_URL}</help-url>@g" \
- $WORK_DIR/server/conf/conf.xml
-fi
-
-if [ -d $SERVER_CONF ]; then
- echo "INFO: copy custom server configuration to target destination"
- cp -R $SERVER_CONF/* $WORK_DIR/server/conf/
- for file in `find $WORK_DIR/server/conf -type f`; do
- sed -i -e "s at D4E_VERSION@${VERSION}@g" $file
- done
-fi
-
-
-echo "INFO: create h2 database for artifacts and datacage"
-mkdir $WORK_DIR/artifactsdb
-mkdir $WORK_DIR/datacagedb
-
-cp $FLYS_SOURCE_DIR/framework/artifact-database/doc/schema-h2.sql $WORK_DIR/artifactsdb/artifacts-h2.sql
-cp $FLYS_SOURCE_DIR/river/artifacts/doc/conf/datacage.sql $WORK_DIR/datacagedb/datacage.sql
-
+echo "INFO: create tarball"
cd $WORK_DIR
-$SCRIPT_DIR/h2/createArtifacts.sh $WORK_DIR/artifactsdb/artifacts-h2.sql
-$SCRIPT_DIR/h2/createDatacage.sh $WORK_DIR/datacagedb/datacage.sql
-cd -
-
-mv $WORK_DIR/artifactsdb $WORK_DIR/server/
-mv $WORK_DIR/datacagedb $WORK_DIR/server/
+mv $FLYS_SOURCE_DIR/river/artifacts/target/river-artifacts-1.0-SNAPSHOT-bin.tar \
+ flys-$VERSION.tar
+mv $FLYS_SOURCE_DIR/river/gwt-client/target/gwt-client-1.0-SNAPSHOT.war \
+ flys-${VERSION}.war
+tar -rf flys-$VERSION.tar flys-${VERSION}.war
if [ -f $INSTALL ]; then
echo "INFO: prepare custom installation script"
- cp $INSTALL $WORK_DIR
- sed -i "s/D4E_VERSION/$VERSION/g" $WORK_DIR/`basename $INSTALL`
+ cp $INSTALL .
+ sed -i "s/D4E_VERSION/$VERSION/g" ./`basename $INSTALL`
+ tar -rf flys-$VERSION.tar `basename $INSTALL`
fi
-echo "INFO: create tarball"
-if [ -d "$WORK_DIR/flys-$VERSION" ]; then
- echo "INFO: removing old directory"
- rm -rf "$WORK_DIR/flys-$VERSION"
+## TODO: tag with maven and include basedir with correct name in assembly ##
+rm -rf flys-$VERSION && mkdir flys-$VERSION
+tar -xf flys-$VERSION.tar -C flys-$VERSION
+tar cfz flys-$VERSION.tar.gz flys-$VERSION
+##
+
+if [ "$DO_TAG" = "TRUE" ]; then
+ echo "Binary-packages for publication:"
+ echo "_ $WORK_DIR/d4e-river-$VERSION.tar.bz2"
+ echo "_ $WORK_DIR/d4e-river-$VERSION.war"
fi
-
-mkdir $WORK_DIR/flys-$VERSION
-mv $WORK_DIR/server $WORK_DIR/client $WORK_DIR/flys-$VERSION
-if [ -n $INSTALL ]; then
- mv $WORK_DIR/`basename $INSTALL` $WORK_DIR/flys-$VERSION
-fi
-cd $WORK_DIR
-tar cfz flys-$VERSION.tar.gz flys-$VERSION
-#echo "INFO: cleanup"
-#rm -r $WORK_DIR/flys-$VERSION
-
echo "DONE: $WORK_DIR/flys-$VERSION.tar.gz"
echo "Changelog: $WORK_DIR/changes_$OLD_REV-$VERSION.txt"
More information about the Dive4Elements-commits
mailing list