diff --git a/.project b/.project index a30e836..2ec7193 100644 --- a/.project +++ b/.project @@ -3,6 +3,7 @@ smartgears-distribution + common-service diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ff63ca..9200994 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,34 +2,26 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for Smartgears Distribution -## [v3.5.0] +## [v4.0.0-SNAPSHOT] - 2022-03-30 -- upgraded gcube-smartgears-bom -- new common-smartgears version -- added resource-registry-handlers to distribution - -## [v3.4.7] - -- upgraded gcube-smartgears-bom -- new common-smartgears version - -## [v3.4.6] - 2022-04-20 - -- added roles to ExternalService Client +- moving to smartgears-4.0.0 ## [v3.4.5] - 2022-03-29 - fixes issue [#23075] + ## [v3.4.4] - 2022-03-23 - solved issue on policy check + ## [v3.4.3] - 2022-01-19 - enabled policy check on smartgears - container configuration for test added + ## [v3.4.2] - 2021-11-08 - common-smartgrears library updated @@ -38,22 +30,27 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Released to have and up-to-date distribution + ## [v3.4.0] - 2020-05-25 - Released to have and up-to-date distribution + ## [v3.3.0] - Accounting-lib inherited dependency has been upgraded to 4.1.0 + ## [v3.2.0] - clean-container script uses proxy + ## [v3.1.0] - Upgraded gcube-smartgears-bom to version 2.1.0 + ## [v3.0.0] - 2020-11-11 - Switched JSON management to gcube-jackson [#19283] diff --git a/Dockerfile b/Dockerfile index 35f41ee..9df09ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,16 @@ -FROM tomcat:8.5.47-jdk8-openjdk - ARG nexuspath - ARG filename - ARG version +FROM tomcat:9.0.65-jdk11-openjdk-buster + ARG filename=smartgears-distribution-4.0.0-SNAPSHOT + ARG version=4.0.0-SNAPSHOT + COPY ./target/$filename.tar.gz /smartgears-distro.tar.gz WORKDIR / - RUN curl -k $nexuspath/$filename.tar.gz --output /smartgears-distro.tar.gz RUN tar zxvf /smartgears-distro.tar.gz + RUN rm /smartgears-distro.tar.gz RUN export CATALINA_HOME=/usr/local/tomcat + RUN ln -s /usr/local/tomcat tomcat RUN mv smartgears-distribution-$version smartgears-distribution ENV GHN_HOME=./smartgears-distribution - RUN ./smartgears-distribution/install -s tomcat - + RUN ./smartgears-distribution/install -s tomcat + COPY startContainer.sh /startContainer.sh + RUN chmod +x /startContainer.sh + ENTRYPOINT ["/startContainer.sh"] + CMD ["catalina.sh","run"] \ No newline at end of file diff --git a/distro/contents/install b/distro/contents/install index 648707c..a569c81 100755 --- a/distro/contents/install +++ b/distro/contents/install @@ -27,27 +27,29 @@ function showhelp { } while getopts ":d:s:g:a:xh" opt; do - case $opt in - d) distro=$OPTARG;; - s) shared=$OPTARG;; - g) ghnhome=$OPTARG;; - a) apps=$OPTARG;; - x) dryrun="true";; - h) showhelp -exit 0 ;; - :) echo -e "\nERROR:option -$OPTARG requires an argument." >&2 ; - showhelp; - echo -e "\naborting.\n" - exit 1;; - \?) echo -e "\nERROR:invalid option: -$OPTARG"; + case $opt in + d) distro=$OPTARG;; + s) shared=$OPTARG;; + g) ghnhome=$OPTARG;; + a) apps=$OPTARG;; + x) dryrun="true";; + h) showhelp + exit 0 ;; + :) echo -e "\nERROR:option -$OPTARG requires an argument." >&2 ; + showhelp; + echo -e "\naborting.\n" + exit 1;; + \?) echo -e "\nERROR:invalid option: -$OPTARG"; showhelp; echo -e "\naborting.\n" exit 1 >&2 ;; - esac + esac done -if [ -z "$ghnhome" ]; then - if [ -z "$GHN_HOME" ]; then +if [ -z "$ghnhome" ] +then + if [ -z "$GHN_HOME" ] + then echo -e "\nERROR:please specify the gHN directory (-g) or define the GHN_HOME env var." >&2 showhelp echo -e "\naborting.\n" @@ -56,31 +58,37 @@ if [ -z "$ghnhome" ]; then ghnhome=$GHN_HOME fi fi -if [ ! -d "$ghnhome" ]; then - if [ -z "$dryrun" ]; then - mkdir $ghnhome +if [ ! -d "$ghnhome" ] +then + if [ -z "$dryrun" ] + then + mkdir $ghnhome fi fi #tomcat target -if [ "$shared" = "tomcat" ]; then - if [ -z "$CATALINA_HOME" ]; then - if [ -z "$WEB_CONTAINER_HOME" ] ; then - echo -e "\nERROR: both CATALINA_HOME and WEB_CONTAINER_HOME are undefined." >&2 - showhelp - echo -e "\naborting.\n" - exit 1 - else - CATALINA_HOME=$WEB_CONTAINER_HOME - fi - fi +if [ "$shared" = "tomcat" ] +then + if [ -z "$CATALINA_HOME" ] + then + if [ -z "$WEB_CONTAINER_HOME" ] + then + echo -e "\nERROR: both CATALINA_HOME and WEB_CONTAINER_HOME are undefined." >&2 + showhelp + echo -e "\naborting.\n" + exit 1 + else + CATALINA_HOME=$WEB_CONTAINER_HOME + fi + fi shared=$CATALINA_HOME/lib apps=$CATALINA_HOME/webapps fi #shared is set -if [ -z "$shared" ]; then +if [ -z "$shared" ] +then echo -e "\nERROR: shared directory is undefined (-s)." >&2 showhelp echo -e "\naborting.\n" @@ -88,25 +96,29 @@ if [ -z "$shared" ]; then fi #shared exists and is a directory -if [ ! -d "$shared" ]; then +if [ ! -d "$shared" ] +then echo -e "\nERROR: shared folder does not exist or is not a directory, aborting." >&2 exit 1; fi #shared exists and is a directory -if [ ! -d "$apps" ]; then +if [ ! -d "$apps" ] +then echo -e "\nERROR: apps folder does not exist or is not a directory, aborting." >&2 exit 1; fi #distrolibs exists and is a directory -if [ ! -d "$distrolibs" ]; then +if [ ! -d "$distrolibs" ] +then echo -e "\nERROR: distro libs does not exist or is not a directory, aborting." exit 1; fi #distroapps exists and is a directory -if [ ! -d "$distroapps" ]; then +if [ ! -d "$distroapps" ] +then echo -e "\nERROR: distro apps does not exist or is not a directory, aborting." exit 1; fi @@ -119,127 +131,134 @@ echo -e " target app directory = $(cd $(dirname $apps); pwd)/$(basename $apps shopt -s nullglob #uninstall libraries -if [ -f $shared/$liblist ]; then +if [ -f $shared/$liblist ] +then echo -e "\nuninstalling existing libraries \c" - while read line; do - if [ -z "$dryrun" ]; then - rm $shared/$line + while read line + do + if [ -z "$dryrun" ] + then + rm $shared/$line fi - echo -n "." - sleep .01 - - done < $shared/$liblist - if [ -z "$dryrun" ]; then - rm $shared/$liblist - fi + echo -n "." + sleep .01 + done < $shared/$liblist + if [ -z "$dryrun" ] + then + rm $shared/$liblist + fi fi #uninstall apps -if [ -f $shared/$applist ]; then +if [ -f $shared/$applist ] +then echo -e "\nuninstalling existing apps \c" - while read line; do - if [ -z "$dryrun" ]; then - rm $apps/$line - folder=${line:0:-4} - if [ ! -z "$folder" ]; then - rm -rf $apps/$folder - fi + while read line + do + if [ -z "$dryrun" ] + then + rm $apps/$line + folder=${line:0:-4} + if [ ! -z "$folder" ] + then + rm -rf $apps/$folder + fi fi - echo -n "." - sleep .01 - - done < $shared/$applist - if [ -z "$dryrun" ]; then - rm $shared/$applist - fi + + echo -n "." + sleep .01 + done < $shared/$applist + if [ -z "$dryrun" ] + then + rm $shared/$applist + fi fi #install libraries echo -e "\ninstalling components \c" for f in $distrolibs/*.*; - do - if [ -z "$dryrun" ]; then - cp $f $shared/ - basename $f | sed -r 's/[0-9]{1,2}.[0-9]{1,2}(.[0-9]{1,2})?(-SNAPSHOT)?(-[0-9]{1,2}.[0-9]{1,2}(.[0-9]{1,2})?-[0-9]{4,8})?/*/' >> $shared/$liblist - fi - echo -n "." - sleep .01 - done +do + if [ -z "$dryrun" ] + then + cp $f $shared/ + basename $f | sed -r 's/[0-9]{1,2}.[0-9]{1,2}(.[0-9]{1,2})?(-SNAPSHOT)?(-[0-9]{1,2}.[0-9]{1,2}(.[0-9]{1,2})?-[0-9]{4,8})?/*/' >> $shared/$liblist + fi + + echo -n "." + sleep .01 +done #install apps echo -e "\ninstalling applications \c" for f in $distroapps/*; - do - if [ -z "$dryrun" ]; then - cp $f $apps/ - basename $f >> $shared/$applist - fi - echo -n "." - sleep .01 - done +do + if [ -z "$dryrun" ] + then + cp $f $apps/ + basename $f >> $shared/$applist + fi + echo -n "." + sleep .01 +done #install scripts echo -e "\ninstalling scripts \c" -if [ ! -d "$ghnhome/scripts" ]; then - if [ -z "$dryrun" ]; then - mkdir $ghnhome/scripts +if [ ! -d "$ghnhome/scripts" ] +then + if [ -z "$dryrun" ] + then + mkdir $ghnhome/scripts fi fi for f in $distroscripts/*; - do - if [ -z "$dryrun" ]; then - cp $f $ghnhome/scripts/ - fi +do + if [ -z "$dryrun" ] + then + cp $f $ghnhome/scripts/ + fi + echo -n "." sleep .01 - done - - - - - +done #install config function escape_slashes { - sed 's/\//\\\//g' + sed 's/\//\\\//g' } function change_line { - local OLD_LINE_PATTERN=$1; shift - local NEW_LINE=$1; shift - local FILE=$1 + local OLD_LINE_PATTERN=$1; shift + local NEW_LINE=$1; shift + local FILE=$1 - local NEW=$(echo "${NEW_LINE}" | escape_slashes) - sed -i '/'"${OLD_LINE_PATTERN}"'/s/.*/'"${NEW}"'/' "${FILE}" + local NEW=$(echo "${NEW_LINE}" | escape_slashes) + sed -i '/'"${OLD_LINE_PATTERN}"'/s/.*/'"${NEW}"'/' "${FILE}" } function replace_property { local PROPERTY=$1 - #local OLD_LINE=$(sed -n "/${PROPERTY}/p" $ghnhome/container.xml) - local NEW_LINE=$(sed -n "/${PROPERTY}/p" $distro/container.xml) - #echo "Replacing property ${PROPERTY}:" - #echo $OLD_LINE - #echo $NEW_LINE - change_line "${PROPERTY}" "${NEW_LINE}" $ghnhome/container.xml - #echo "done." + local NEW_LINE=$(sed -n "/${PROPERTY}/p" $distro/container.ini) + change_line "${PROPERTY}" "${NEW_LINE}" $ghnhome/container.ini } echo -e "\ninstalling configuration \c" -if [ ! -s "$ghnhome/container.xml" ]; then - if [ -z "$dryrun" ]; then - cp $distro/container.xml $ghnhome/ +if [ ! -s "$ghnhome/container.ini" ] +then + if [ -z "$dryrun" ] + then + cp $distro/container.ini $ghnhome/ fi echo -n "." - sleep .01 + sleep .01 else if [ -z "$dryrun" ]; then - #echo "Creating a backup copy of $ghnhome/container.xml" - cp $ghnhome/container.xml $ghnhome/container.xml.bck + #echo "Creating a backup copy of $ghnhome/container.ini" + cp $ghnhome/container.ini $ghnhome/container.ini.bck ## Please note the ' at the end of SmartGearsDistribution property ## the ' is needed to exactly math the property otherwise also @@ -249,22 +268,27 @@ else replace_property $property done fi + echo -n "." - sleep .01 + sleep .01 fi -if [ -z "$dryrun" ]; then - cat $distro/logback.xml | sed "s|\${LOGFILE}|$ghnhome|" > $shared/logback.xml - echo -n "." - sleep .01 + +if [ -z "$dryrun" ] +then + cat $distro/logback.xml | sed "s|\${LOGFILE}|$ghnhome|" > $shared/logback.xml + echo -n "." + sleep .01 fi #creating the symlink to shared and apps folder -if [ -z "$dryrun" ]; then +if [ -z "$dryrun" ] +then ln -s $shared $ghnhome/lib fi -if [ -z "$dryrun" ]; then +if [ -z "$dryrun" ] +then ln -s $apps $ghnhome/apps fi diff --git a/distro/contents/logback.xml b/distro/contents/logback.xml index d46921c..347f69b 100644 --- a/distro/contents/logback.xml +++ b/distro/contents/logback.xml @@ -1,4 +1,3 @@ - - - localhost - 8080 - gcube - - - - - - - - - it - rome - 41.9000 - 12.5000 - - - - - - - - - 60 - - \ No newline at end of file diff --git a/distro/standalone.xml b/distro/standalone.xml index 6d78709..9cd6c34 100644 --- a/distro/standalone.xml +++ b/distro/standalone.xml @@ -47,8 +47,8 @@ - ${distroDirectory}/contents/samplecontainer.xml - container.xml + ${distroDirectory}/contents/samplecontainer.ini + container.ini true diff --git a/pom.xml b/pom.xml index 1b815db..4e90899 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,5 @@ - 4.0.0 @@ -6,48 +7,39 @@ org.gcube.tools 1.1.0 - org.gcube.distribution smartgears-distribution - 3.5.0 + 4.0.0-SNAPSHOT pom A distribution for the SmartGears Framework - distro https://wiki.gcube-system.org/gcube/SmartGears - scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git https://code-repo.d4science.org/gCubeSystem/${project.artifactId} - org.gcube.distribution gcube-smartgears-bom - 2.3.0 + 3.0.0-SNAPSHOT pom import - org.gcube.core common-smartgears - - org.gcube.core - common-smartgears-utils - org.gcube.common - gxHTTP + gxHTTP org.gcube.core @@ -88,22 +80,26 @@ org.gcube.core common-smartgears - [3.0.0,4.0.0-SNAPSHOT) + [4.0.0-SNAPSHOT,5.0.0-SNAPSHOT) probe war - org.gcube.resourcemanagement - whn-manager - [2.0.0,3.0.0-SNAPSHOT) - war + org.gcube.common.core + legacy-is-publisher-connector + - org.gcube.data.transfer - data-transfer-service - [2.0.0,3.0.0-SNAPSHOT) - war + org.slf4j + slf4j-api + runtime + + + + + + @@ -142,8 +138,6 @@ true - - diff --git a/startContainer.sh b/startContainer.sh new file mode 100644 index 0000000..318fc04 --- /dev/null +++ b/startContainer.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +logs=/etc/logback.xml +container=/etc/container.ini +if [ -f "$logs" ]; then + cp $logs /tomcat/lib +fi + +if [ -f "$container" ]; then + cp $container /smartgears-distribution +fi + +exec "$@" + +