use seperate start and stop to avoid unpredictable errors when applying patches on a live SQ instancetags/5.2-RC1
@@ -44,3 +44,6 @@ Desktop.ini | |||
# ---- Sonar | |||
.sonar/ | |||
# scripts patches, they are local to each developer | |||
scripts/patches/*.sh |
@@ -0,0 +1,52 @@ | |||
This directory contains patches to be used by the any script which use function call_patches from patches_utils.sh. | |||
Patches are files with extension ".sh". Name of the patch is the name of the file without extension (so name of patch "debug.sh" is "debug"). | |||
Patches run in the same directory as the calling script provided patches_utils.sh as been sourced in the calling script. | |||
Patches are passed on to start.sh script using command line argument "-p" by their name. | |||
More than one can be specified using a colon. | |||
Each patch is invoked with one argument: | |||
* SQ_HOME: the path to the home of the started SQ instance | |||
************************************************************************************************************************ | |||
sample and common scripts are provided below | |||
************************************************************************************************************************ | |||
****************************************** start of debug.sh ****************************************** | |||
#!/bin/bash | |||
############################### | |||
# sets property sonar.web.javaAdditionalOpts in sonar.properties to activate debug | |||
############################### | |||
set -euo pipefail | |||
source scripts/property_utils.sh | |||
SQ_HOME=$1 | |||
echo "enabling debug in conf/sonar.properties, listening on port 5005" | |||
set_property sonar.web.javaAdditionalOpts -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 $SQ_HOME/conf/sonar.properties | |||
****************************************** end of debug.sh ****************************************** | |||
****************************************** start of views.sh ****************************************** | |||
#!/bin/bash | |||
############################### | |||
# copies the sonar-views plugin jar to the extension directory | |||
############################### | |||
set -euo pipefail | |||
source scripts/property_utils.sh | |||
SQ_HOME=$1 | |||
VIEWS_FILE=~/DEV/views/target/sonar-views-plugin-2.9-SNAPSHOT.jar | |||
EXT_DIR=$SQ_HOME/extensions/plugins/ | |||
echo "copy $VIEWS_FILE to $EXT_DIR" | |||
cp $VIEWS_FILE $EXT_DIR | |||
****************************************** end of views.sh ****************************************** |
@@ -0,0 +1,23 @@ | |||
#!/bin/bash | |||
############################### | |||
# exposes library functions to modify properties in a property | |||
############################### | |||
set -euo pipefail | |||
PATCHES_HOME=scripts/patches | |||
# $1: name(s) of patches to call, separated by a colon | |||
# all other arguments are passed as is to the patches | |||
function call_patches() { | |||
PATCHES=$1 | |||
ARGS=${@:2} | |||
IFS=',' | |||
for PATCH in $PATCHES; do | |||
#echo "calling $PATCHES_HOME/$PATCH.sh $ARGS" | |||
$PATCHES_HOME/$PATCH.sh $ARGS | |||
done | |||
} | |||
@@ -0,0 +1,43 @@ | |||
#!/bin/bash | |||
############################### | |||
# exposes library functions to modify properties in a property | |||
# | |||
# TODO function append_property | |||
# | |||
############################### | |||
set -euo pipefail | |||
if [[ "$OSTYPE" == "darwin"* ]]; then | |||
SED_DISABLE_BACKUP=" ''" | |||
else | |||
SED_DISABLE_BACKUP="" | |||
fi | |||
function cnt_lines() { | |||
FILE=$1 | |||
cat $1 | wc -l | |||
} | |||
function set_property() { | |||
PROPERTY=$1 | |||
VALUE=$2 | |||
FILE=$3 | |||
# uncomment below to help debug calls to set_property | |||
# echo "setting property $PROPERTY to value $VALUE in $FILE" | |||
# delete line of specified property | |||
LINE_COUNT=$(cnt_lines $FILE) | |||
REGEXP="${1//\./\\\.}\s*=" | |||
sed -i $SED_DISABLE_BACKUP "/${REGEXP}/d" $FILE | |||
# add property if at least one line deleted | |||
NEW_LINE_COUNT=$(cnt_lines $FILE) | |||
if [ $LINE_COUNT -gt $NEW_LINE_COUNT ]; then | |||
echo "" >> $FILE | |||
echo "${PROPERTY}=${VALUE}" >> $FILE | |||
fi | |||
} | |||
@@ -0,0 +1,59 @@ | |||
#!/bin/bash | |||
############################### | |||
# usage: start.sh [ -p ARG ] | |||
# -p ARG: name(s) of patch separated by colon (name of patch is filename without extension) | |||
############################### | |||
ROOT=$(pwd) | |||
PATCHES="" | |||
while getopts ":p:" opt; do | |||
case "$opt" in | |||
p) PATCHES=$OPTARG | |||
;; | |||
\?) | |||
>&2 echo "Unsupported option $OPTARG" | |||
exit 1 | |||
;; | |||
esac | |||
done | |||
if [[ "$OSTYPE" == "darwin"* ]]; then | |||
OS='macosx-universal-64' | |||
else | |||
OS='linux-x86-64' | |||
fi | |||
ls sonar-application/target/sonarqube-*.zip 1> /dev/null 2>&1 | |||
if [ "$?" != "0" ]; then | |||
echo 'Sources are not built' | |||
./build.sh | |||
fi | |||
cd sonar-application/target/ | |||
ls sonarqube-*/bin/$OS/sonar.sh 1> /dev/null 2>&1 | |||
if [ "$?" != "0" ]; then | |||
unzip sonarqube-*.zip | |||
fi | |||
cd sonarqube-* | |||
# from that point on, strict bash | |||
set -euo pipefail | |||
SQ_HOME=$(pwd) | |||
cd $ROOT | |||
source $ROOT/scripts/patches_utils.sh | |||
SQ_EXEC=$SQ_HOME/bin/$OS/sonar.sh | |||
$SQ_EXEC stop | |||
# invoke patches if at least one was specified | |||
# each patch is passed the path to the SQ instance home directory as first and only argument | |||
if [ "$PATCHES" != "" ]; then | |||
call_patches $PATCHES $SQ_HOME | |||
fi | |||
$SQ_EXEC start | |||
sleep 1 | |||
tail -100f $SQ_HOME/logs/sonar.log |
@@ -1,36 +0,0 @@ | |||
#!/bin/bash | |||
############################### | |||
# usage: use -d option to enable remote debugging of the web server on port 5005 | |||
############################### | |||
if [[ "$OSTYPE" == "darwin"* ]]; then | |||
OS='macosx-universal-64' | |||
SED_DISABLE_BACKUP=" ''" | |||
else | |||
OS='linux-x86-64' | |||
SED_DISABLE_BACKUP="" | |||
fi | |||
ls sonar-application/target/sonarqube-*.zip 1> /dev/null 2>&1 | |||
if [ "$?" != "0" ]; then | |||
echo 'Sources are not built' | |||
./build.sh | |||
fi | |||
cd sonar-application/target/ | |||
ls sonarqube-*/bin/$OS/sonar.sh 1> /dev/null 2>&1 | |||
if [ "$?" != "0" ]; then | |||
unzip sonarqube-*.zip | |||
fi | |||
cd sonarqube-* | |||
if [ "$1" = "-d" ]; then | |||
echo "enabling debug in conf/sonar.properties, listening on port 5005" | |||
sed -i $SED_DISABLE_BACKUP '/javaAdditionalOpts/d' conf/sonar.properties | |||
echo "" >> conf/sonar.properties | |||
echo "sonar.web.javaAdditionalOpts=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" >> conf/sonar.properties | |||
fi | |||
bin/$OS/sonar.sh restart | |||
sleep 1 | |||
tail -100f logs/sonar.log |
@@ -0,0 +1 @@ | |||
scripts/start.sh |