Mercurial > dive4elements > river
view contrib/make_flys_release/make_release.sh @ 8709:71ae18553377
(issue1754) Also fixup master artifact for already loaded recommendations
As the load many call creates (and needs to create) all artifacts
in the reccomendations this would break "old" recommendations after
a reload through the "Pencil" mode.
A better fix would probably be to just set the master artifiact
in the recommendations but due to the extremly weird interaction
with the server at this point it is not trivial to identify how
this can be done.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 24 Apr 2015 15:57:23 +0200 |
parents | 25f9ab25affd |
children | 1e9667ef5742 |
line wrap: on
line source
#!/bin/bash # Release script for Dive4Elements River # # Authors: # Andre Heinecke <aheinecke@intevation.de> # # Copyright (C) 2011 - 2014 by Bundesanstalt für Gewässerkunde # Software engineering by Intevation GmbH # # This file is Free Software under the GNU AGPL (>=v3) # and comes with ABSOLUTELY NO WARRANTY! Check out the # documentation coming with Dive4Elements River for details. set -e LC_ALL=en_US.UTF-8 DEFAULT_WD=/tmp/flys-release DEVELOPER=aheinecke ARTIFACTS_HG_REPO="https://wald.intevation.org/hg/dive4elements/framework" HTTPCLIIENT_HG_REPO="https://wald.intevation.org/hg/dive4elements/http-client" FLYS_HG_REPO="https://wald.intevation.org/hg/dive4elements/river" REPOS="river http-client framework" # Do not use spaces in path FLYS_SOURCE_DIR=/local-vol1/aheinecke/flys-release SCRIPT_DIR=$(readlink -f `dirname $0`) usage(){ cat << EOF usage: $0 [options] VERSION Create a D4E River package OPTIONS: -?, --help Show this message -w The working directory to use (do not use spaces in path) Default: $DEFAULT_WD -t Tag the current default branch as "VERSION" -o, --oracle Release is for oracle. Suitable jar-file for JDBC driver has to be given with the environment variable ORACLE_JDBC VERSION must specify a tag (usually MAYOR.MINOR.PATCH) or a branch name. EOF exit 0 } # --backend-db-url Url of database backend. Default: $BACKENDURL # --backend-db-pass Backend db password. Default: $BACKENDPASS # --backend-db-port Backend db port. Default: $BACKENDPORT # --backend-db-user Backend db user. Default: $BACKENDUSER # --backend-db-backend Backend db backend name. Default: $BACKENDBACK # --seddb-url Sediment db url. Default: $SEDDBURL # --seddb-port Sediment db port. Default: $SEDDBPORT # --seddb-user Sediment db user. Default: $SEDDBUSER # --seddb-pass Sediment db password. Default: $SEDDBPASS # --seddb-back Sediment db backend. Default: $SEDDBBACK # customizable variables ELBE_MODEL_UUID=${ELBE_MODEL_UUID:-1a4825f6-925f-11e3-8165-001f29e71d12} OPTS=`getopt -o ?w:,t,o \ -l help,oracle \ -n $0 -- "$@"` if [ $? != 0 ] ; then usage; fi eval set -- "$OPTS" while true ; do case "$1" in "-?"|"--help") usage;; "--") shift break;; "-w") WORK_DIR=$2 shift 2;; "-o"|"--oracle") BUILD_ORACLE="TRUE" shift;; "-t") DO_TAG="TRUE" shift;; *) echo "Unknown Option $1" usage;; esac done if [ $# != 1 ]; then usage fi VERSION=$1 if [ -z $WORK_DIR ]; then WORK_DIR=$DEFAULT_WD fi mkdir -p $WORK_DIR if [ ! -d $FLYS_SOURCE_DIR ]; then mkdir -p $FLYS_SOURCE_DIR echo "Cloning sources" cd $FLYS_SOURCE_DIR hg clone $ARTIFACTS_HG_REPO framework hg clone $HTTPCLIIENT_HG_REPO http-client hg clone $FLYS_HG_REPO river else echo "Updating sources / Reverting changes" cd $FLYS_SOURCE_DIR for repo in $REPOS; do cd $repo && hg purge && hg revert -a && hg pull -u && cd - done; fi if [ "$DO_TAG" = "TRUE" ]; then echo "INFO: Tagging version $VERSION" for repo in $REPOS; do cd $repo CHANGESET=$(hg log -l1 |head -1 | awk -F: '{print $3}') echo "" echo "Do you really want to tag $repo rev: $CHANGESET as Version $VERSION?" echo "press enter to continue or CTRL+C to abort." echo "" hg log -l1 read OLD_REV=$(cat .hgtags | tail -1 | awk '{print $2}') hg tag $VERSION -m "Added tag $VERSION for changeset $CHANGESET" hg push ssh://$DEVELOPER@scm.wald.intevation.org/hg/dive4elements/$repo echo "Changelog for $repo" >> $WORK_DIR/changes_$OLD_REV-$VERSION.txt echo "#############################################################################" \ >> $WORK_DIR/changes_$OLD_REV-$VERSION.txt hg log -r $VERSION:$OLD_REV --style changelog >> $WORK_DIR/changes_$OLD_REV-$VERSION.txt cd $FLYS_SOURCE_DIR done; fi # Update to current version for repo in $REPOS; do cd $repo if [ -z "`hg tags | sed -n "/$VERSION/p"`" -a -z "`hg branches | sed -n "/$VERSION/p"`" ] then echo "WARNING: $VERSION not found in $repo! Updating to default." hg up default else hg up "$VERSION" fi cd $FLYS_SOURCE_DIR done 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 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" #Needs to be done before the tomcat replacement below sed -i -e "s@1a4825f6-925f-11e3-8165-001f29e71d12@${ELBE_MODEL_UUID}@g" \ $FLYS_SOURCE_DIR/river/gwt-client/src/main/webapp/images/FLYS_Karte_interactive.html if [ -d $WEBINF ]; then echo "INFO: copy custom client configuration to target destination" WEBINF_DIR=$FLYS_SOURCE_DIR/river/gwt-client/src/main/webapp/WEB-INF/ cp -R $WEBINF/* $WEBINF_DIR for file in `find $WEBINF_DIR/ -type f`; do sed -i -e "s@D4E_VERSION@${VERSION}@g" $file done fi if [ -f $CLIENT_CONF ]; then echo "INFO: copy custom java script client configuration to target destination" cp $CLIENT_CONF \ $FLYS_SOURCE_DIR/river/gwt-client/src/main/java/org/dive4elements/river/client/client/config.xml fi 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 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@D4E_VERSION@${VERSION}@g" $file done fi echo "INFO: compile and build sources" cp $WORK_DIR/wsplgen-linux-64bit-static \ $FLYS_SOURCE_DIR/river/artifacts/bin/wsplgen if [ "$BUILD_ORACLE" = "TRUE" ]; then 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 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 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: create tarball" cd $WORK_DIR 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 . sed -i "s/D4E_VERSION/$VERSION/g" ./`basename $INSTALL` tar -rf flys-$VERSION.tar `basename $INSTALL` fi ## 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 echo "DONE: $WORK_DIR/flys-$VERSION.tar.gz" echo "Changelog: $WORK_DIR/changes_$OLD_REV-$VERSION.txt"