From 47b5b511b2c1679bea5bec80296a16fb180781b6 Mon Sep 17 00:00:00 2001 From: Filipe Dias Lewandowski Date: Wed, 12 Mar 2025 10:29:35 +0100 Subject: [PATCH 1/2] Closes #2706: draft --- scripts/deploy/download_dataverse.sh | 19 ++++++++++++++ scripts/deploy/reindex_solr.sh | 21 +++++++++++++++ scripts/deploy/setenv.sh | 38 ++++++++++++++++++++++++++++ scripts/deploy/start.sh | 19 ++++++++++++++ scripts/deploy/stop.sh | 13 ++++++++++ scripts/deploy/update_solr_schema.sh | 15 +++++++++++ 6 files changed, 125 insertions(+) create mode 100755 scripts/deploy/download_dataverse.sh create mode 100755 scripts/deploy/reindex_solr.sh create mode 100755 scripts/deploy/setenv.sh create mode 100755 scripts/deploy/start.sh create mode 100755 scripts/deploy/stop.sh create mode 100755 scripts/deploy/update_solr_schema.sh diff --git a/scripts/deploy/download_dataverse.sh b/scripts/deploy/download_dataverse.sh new file mode 100755 index 0000000000..d6f7fd1194 --- /dev/null +++ b/scripts/deploy/download_dataverse.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +. setenv.sh + +mkdir -p $SCRIPTS_DOWNLOAD_DIR + +if [[ -f ${DATAVERSE_WAR} ]]; then + rm "${DATAVERSE_WAR}" +fi + +if [[ -f ${DATAVERSE_ORIGINAL_WAR} ]]; then + echo "$DATAVERSE_HTTP_DOWNLOAD already downloaded to ${DATAVERSE_ORIGINAL_WAR}." +else + echo "Downloading $DATAVERSE_HTTP_DOWNLOAD to ${DATAVERSE_ORIGINAL_WAR}." + wget -O $DATAVERSE_ORIGINAL_WAR "$DATAVERSE_HTTP_DOWNLOAD" +fi + +cp $DATAVERSE_ORIGINAL_WAR ${DATAVERSE_WAR} + diff --git a/scripts/deploy/reindex_solr.sh b/scripts/deploy/reindex_solr.sh new file mode 100755 index 0000000000..b5d7baed55 --- /dev/null +++ b/scripts/deploy/reindex_solr.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e +. setenv.sh + +echo "### ReIndex Solr step 1 ###" +reindex_step1_resp=$(curl -X DELETE "$DATAVERSE_API_URL/admin/index/timestamps?unblock-key=$UNBLOCK_KEY") + +echo "status: $reindex_step1_resp" +if [[ $reindex_step1_resp != *"\"status\":\"OK\","* ]]; then + echo "### ReIndex step 1 failed!!! ###" + exit 1 +fi + +echo "### ReIndex Solr step 2 ###" +reindex_step2_resp=$(curl "$DATAVERSE_API_URL/admin/index/continue?unblock-key=$UNBLOCK_KEY") +echo "status: $reindex_step2_resp" +if [[ $reindex_step2_resp != *"\"status\":\"OK\","* ]]; then + echo "### ReIndex step 2 failed!!! ###" + exit 1 +fi diff --git a/scripts/deploy/setenv.sh b/scripts/deploy/setenv.sh new file mode 100755 index 0000000000..2377ea5244 --- /dev/null +++ b/scripts/deploy/setenv.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +export SCRIPTS_DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +export SCRIPTS_DOWNLOAD_DIR=$HOME/download + +export DATAVERSE_MODULE="dataverse/dataverse-webapp" + +# RELEASE VERSION +#export DATAVERSE_VERSION=1.0.0 +#export DATAVERSE_WAR_NAME=dataverse-webapp-$DATAVERSE_VERSION.war +#export DATAVERSE_HTTP_DOWNLOAD=https://maven.ceon.pl/artifactory/drodb-releases/pl/edu/icm/$DATAVERSE_MODULE/$DATAVERSE_VERSION/$DATAVERSE_WAR_NAME + +# SNAPSHOT VERSION +export DATAVERSE_VERSION=1.1.0-SNAPSHOT +export DATAVERSE_WAR_NAME=dataverse-webapp-1.1.0-20250312.014933-20.war +export DATAVERSE_HTTP_DOWNLOAD=https://maven.ceon.pl/artifactory/drodb-snapshots/pl/edu/icm/$DATAVERSE_MODULE/$DATAVERSE_VERSION/$DATAVERSE_WAR_NAME + + +export SCHEMA_XML_HTTP_DOWNLOAD=https://raw.githubusercontent.com/CeON/dataverse/develop/conf/solr/7.3.1/schema.xml +export SOLR_CONFIG_XML_HTTP_DOWNLOAD=https://raw.githubusercontent.com/CeON/dataverse/develop/conf/solr/7.3.1/solrconfig.xml + +export DATAVERSE_ORIGINAL_WAR=$SCRIPTS_DOWNLOAD_DIR/$DATAVERSE_WAR_NAME +export DATAVERSE_WAR=$SCRIPTS_DOWNLOAD_DIR/dataverse.war +export SCHEMA_XML=$SCRIPTS_DOWNLOAD_DIR/schema.xml +export SOLR_CONFIG_XML=$SCRIPTS_DOWNLOAD_DIR/solrconfig.xml + +export ASADMIN_BIN="/opt/glassfish/bin/asadmin" +export GLASSFISH_DOMAIN_DIR=/opt/glassfish/glassfish/domains/domain1 +export SOLR_DIR=/opt/solr +export SOLR_COLLECTION_DIR=$SOLR_DIR/server/solr/collection1 + +export LOGIN_AS_GLASSFISH="sudo /bin/su - glassfish -s /bin/bash" +export LOGIN_AS_SOLR="sudo /bin/su - solr -s /bin/bash" +export SERVICE_BIN="sudo /bin/systemctl" + +export DATAVERSE_API_URL=http://localhost:8080/api +export UNBLOCK_KEY=BYvB7FCE-TuzYdTAN + diff --git a/scripts/deploy/start.sh b/scripts/deploy/start.sh new file mode 100755 index 0000000000..a0f52bf31a --- /dev/null +++ b/scripts/deploy/start.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e +. setenv.sh + +echo "### Starting Solr ###" +$SERVICE_BIN start solr + +echo "### Starting Glassfish ###" +$SERVICE_BIN start glassfish + +echo "### Downloading Dataverse war ###" +. download_dataverse.sh + +echo "### Deploying Dataverse ###" +$ASADMIN_BIN deploy --force $DATAVERSE_WAR + +. reindex_solr.sh + diff --git a/scripts/deploy/stop.sh b/scripts/deploy/stop.sh new file mode 100755 index 0000000000..3c556aa276 --- /dev/null +++ b/scripts/deploy/stop.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +. setenv.sh + +echo "### Undeploying Dataverse ###" +$ASADMIN_BIN undeploy dataverse + +echo "### Stopping Glassfish ###" +$SERVICE_BIN stop glassfish + +echo "### Stopping Solr ###" +$SERVICE_BIN stop solr + diff --git a/scripts/deploy/update_solr_schema.sh b/scripts/deploy/update_solr_schema.sh new file mode 100755 index 0000000000..f475dc2364 --- /dev/null +++ b/scripts/deploy/update_solr_schema.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +. setenv.sh + +if [ "$(whoami)" != "solr" ]; then + echo "Script must be run as user: solr" + exit -1 +fi + +wget -O $SOLR_CONFIG_XML $SOLR_CONFIG_XML_HTTP_DOWNLOAD +wget -O $SCHEMA_XML $SCHEMA_XML_HTTP_DOWNLOAD + +cp $SCHEMA_XML $SOLR_COLLECTION_DIR/conf/ +cp $SOLR_CONFIG_XML $SOLR_COLLECTION_DIR/conf/ + From 4108aee8cacac81c2106c2659501e63ac6f844dc Mon Sep 17 00:00:00 2001 From: Filipe Dias Lewandowski Date: Tue, 18 Mar 2025 12:28:56 +0100 Subject: [PATCH 2/2] remove unblock key, should be provided by environment --- scripts/deploy/setenv.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/deploy/setenv.sh b/scripts/deploy/setenv.sh index 2377ea5244..c882787b2d 100755 --- a/scripts/deploy/setenv.sh +++ b/scripts/deploy/setenv.sh @@ -34,5 +34,4 @@ export LOGIN_AS_SOLR="sudo /bin/su - solr -s /bin/bash" export SERVICE_BIN="sudo /bin/systemctl" export DATAVERSE_API_URL=http://localhost:8080/api -export UNBLOCK_KEY=BYvB7FCE-TuzYdTAN