-
Notifications
You must be signed in to change notification settings - Fork 3
/
build.sh
180 lines (152 loc) · 8.23 KB
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/bin/bash
################################################################################
# Build spring boot with starter script
# Usage:
# bash build.sh [/path/to/installation/dir]
################################################################################
################################################################################
# Define default values for variables
################################################################################
# no defaults yet!
################################################################################
# START DECLARATION FUNCTIONS
################################################################################
################################################################################
function usage {
################################################################################
echo "Script for creating base-repo service."
echo "USAGE:"
echo " $0 [/path/to/installation/dir]"
echo "IMPORTANT: Please enter an empty or new directory as installation directory."
exit 1
}
################################################################################
function checkParameters {
################################################################################
# Check no of parameters.
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters!"
usage
fi
# Check if argument is given
if [ -z "$1" ]; then
echo "Please provide a directory where to install."
usage
exit 1
fi
# Check for invalid flags
if [ "${1:0:1}" = "-" ]; then
usage
fi
INSTALLATION_DIRECTORY=$1
# Check if directory exists
if [ ! -d "$INSTALLATION_DIRECTORY" ]; then
# Create directory if it doesn't exists.
mkdir -p "$INSTALLATION_DIRECTORY"
if [ $? -ne 0 ]; then
echo "Error creating directory '$INSTALLATION_DIRECTORY'!"
echo "Please make sure that you have the correct access permissions for the specified directory."
exit 1
fi
fi
# Check if directory is empty
if [ ! -z "$(ls -A "$INSTALLATION_DIRECTORY")" ]; then
echo "Directory '$INSTALLATION_DIRECTORY' is not empty!"
echo "Please enter an empty or a new directory!"
exit 1
fi
# Convert variable of installation directory to an absolute path
cd "$INSTALLATION_DIRECTORY"
INSTALLATION_DIRECTORY=`pwd`
cd "$ACTUAL_DIR"
}
################################################################################
function printInfo {
################################################################################
echo "---------------------------------------------------------------------------"
echo $*
echo "---------------------------------------------------------------------------"
}
################################################################################
# END DECLARATION FUNCTIONS / START OF SCRIPT
################################################################################
################################################################################
# Test for commands used in this script
################################################################################
testForCommands="chmod cp dirname find java javac mkdir git"
for command in $testForCommands
do
type $command >> /dev/null
if [ $? -ne 0 ]; then
echo "Error: command '$command' is not installed!"
exit 1
fi
done
################################################################################
# Determine directory of script.
################################################################################
ACTUAL_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
################################################################################
# Check parameters
################################################################################
checkParameters $*
################################################################################
# Determine repo name
################################################################################
REPO_NAME=`./gradlew -q printProjectName`
# Use only last line
REPO_NAME=${REPO_NAME##*$'\n'}
printInfo "Build microservice of $REPO_NAME at '$INSTALLATION_DIRECTORY'"
################################################################################
# Build service
################################################################################
echo Build service...
./gradlew -Dprofile=minimal clean build
echo "Copy configuration to '$INSTALLATION_DIRECTORY'..."
find ./settings -name application-default.properties -exec cp '{}' "$INSTALLATION_DIRECTORY"/application.properties \;
echo "Copy jar file to '$INSTALLATION_DIRECTORY'..."
find . -name "$REPO_NAME.jar" -exec cp '{}' "$INSTALLATION_DIRECTORY" \;
echo "Create config directory"
mkdir "$INSTALLATION_DIRECTORY"/config
echo "To overwrite default properties place 'application.properties' into this directory." > "$INSTALLATION_DIRECTORY"/config/README.txt
echo "Only changed properties should be part of this file." >> "$INSTALLATION_DIRECTORY"/config/README.txt
echo "Create lib directory"
mkdir "$INSTALLATION_DIRECTORY"/lib
###############################################################################
# Create run script
################################################################################
printInfo "Create run script ..."
cd "$INSTALLATION_DIRECTORY"
# Determine name of jar file.
jarFile=(`ls $REPO_NAME.jar`)
echo "#!/bin/bash" > run.sh
echo "################################################################################" >> run.sh
echo "# Run microservice '$REPO_NAME'" >> run.sh
echo "# /" >> run.sh
echo "# |- application.properties - Default configuration for microservice" >> run.sh
echo "# |- '$REPO_NAME'*.jar" - Microservice >> run.sh
echo "# |- run.sh - Start script " >> run.sh
echo "# |- lib/ - Directory for plugins (if supported)" >> run.sh
echo "# |- config/ " >> run.sh
echo "# |- application.properties - Overwrites default configuration (optional)" >> run.sh
echo "################################################################################" >> run.sh
echo " " >> run.sh
echo "################################################################################" >> run.sh
echo "# Define jar file" >> run.sh
echo "################################################################################" >> run.sh
echo jarFile=$jarFile >> run.sh
echo " " >> run.sh
echo "################################################################################" >> run.sh
echo "# Determine directory of script." >> run.sh
echo "################################################################################" >> run.sh
echo 'ACTUAL_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"' >> run.sh
echo 'cd "$ACTUAL_DIR"' >> run.sh
echo " " >> run.sh
echo "################################################################################" >> run.sh
echo "# Start micro service" >> run.sh
echo "################################################################################" >> run.sh
echo 'java -cp ".:$jarFile" -Dloader.path="file://$ACTUAL_DIR/$jarFile,./lib/,." -jar $jarFile' >> run.sh
# make script executable
chmod 755 run.sh
echo .
printInfo "Now you can start the service by calling '$INSTALLATION_DIRECTORY/run.sh'"