瀏覽代碼

[SCRIPTS] add support for patches to start.sh

use seperate start and stop to avoid unpredictable errors when applying patches on a live SQ instance
tags/5.2-RC1
Sébastien Lesaint 8 年之前
父節點
當前提交
c31e066717
共有 7 個檔案被更改,包括 181 行新增36 行删除
  1. 3
    0
      .gitignore
  2. 52
    0
      scripts/patches/README.txt
  3. 23
    0
      scripts/patches_utils.sh
  4. 43
    0
      scripts/property_utils.sh
  5. 59
    0
      scripts/start.sh
  6. 0
    36
      start.sh
  7. 1
    0
      start.sh

+ 3
- 0
.gitignore 查看文件

@@ -44,3 +44,6 @@ Desktop.ini

# ---- Sonar
.sonar/

# scripts patches, they are local to each developer
scripts/patches/*.sh

+ 52
- 0
scripts/patches/README.txt 查看文件

@@ -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 ******************************************

+ 23
- 0
scripts/patches_utils.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
}



+ 43
- 0
scripts/property_utils.sh 查看文件

@@ -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
}



+ 59
- 0
scripts/start.sh 查看文件

@@ -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

+ 0
- 36
start.sh 查看文件

@@ -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

+ 1
- 0
start.sh 查看文件

@@ -0,0 +1 @@
scripts/start.sh

Loading…
取消
儲存