-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdeploy_weblogic.sh
165 lines (139 loc) · 4.3 KB
/
deploy_weblogic.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
#!/bin/bash
#Script di Deploy per Weblogic 12
#Felipe Ferreira 11/2017
D=$(date +%Y%m%d%H%M)
###VARIABLES
TMP_DIR="/tmp/deploy_wl/"
HOST_NAME="localhost"
HOST_USER="weblogic"
HOST_PASS="weblogic1"
HOST_PORT="7001"
APPSERVERNUMBER=2
SERVER="Server2"
PORT="7004"
APPURL="http://localhost:${PORT}/wamain/"
WLENV="/sbWls/Oracle/wlserver/server/bin/setWLSEnv.sh"
WL_HOME="/doWlsdmnextsvil/dmnextsvil"
WL_BIN="${WL_HOME}/bin/"
WL_JAR="/sbWls/Oracle/wlserver/server/lib/weblogic.jar"
WL_LOG="${WL_HOME}/servers/${SERVER}/logs/${SERVER}.log"
WL_LOGOUT="${WL_HOME}/servers/${SERVER}/logs/${SERVER}.out"
WL_EAR="/doWlsdmnextsvil/ear/app/"
WL_EAR_BKP="${WL_HOME}/servers/${SERVER}/backup_ear_${D}/"
JAVA_BIN="/sbJvm/jdk1.7.0_80/jre/bin/java"
PACKAGE="package_wl.zip"
TERRORS=0
######## FUNTIONS #########
function unzipDeployFile() {
#Cleanup tmp dir
if [ -d $TMP_DIR ]; then
/bin/rm -rf $TMP_DIR
mkdir -p $TMP_DIR
else
mkdir -p $TMP_DIR
fi
cd $TMP_DIR
if [ ! -f ${WL_HOME}/${PACKAGE} ]; then
echo "ERROR - Package ${WL_BIN}${PACKAGE} not found"
exit 2
fi
/bin/cp -fv ${WL_HOME}/${PACKAGE} .
unzip -q -o $PACKAGE
#MANUALY DELETE USELESS EAR HERE
if [ -f "gepe-mtra.ear" ]; then
/bin/rm -f gepe-mtra.ear
fi
if [ -f "gepe-f24.ear" ]; then
/bin/rm -f gepe-f24.ear
fi
#List of ear files to variable
for F in *.ear; do
FILESDEP="$FILESDEP $F"
echo "File -> $F"
done
}
function backup() {
if [ -d $WL_EAR_BKP ]; then
mkdir -p $WL_EAR_BKP
fi
C=$(ls -l $WL_EAR |wc -l)
/bin/cp -f ${WL_EAR}*.ear $WL_EAR_BKP
echo "Backuped $C ear files to $WL_EAR_BKP"
}
function fallback() {
echo "Starting Fallbackup from $WL_EAR_BKP"
if [ ! -d $WL_EAR_BKP ]; then
echo "ERROR - Could not find the backup folder $WL_EAR_BKP"
exit 2
fi
source $WLENV
for FILESDEP in $WL_EAR_BKP ; do
agentDeployer $FILESDEP
done
echo "Done Fallbackup from $WL_EAR_BKP"
}
function agentDeployer() {
DEPLOYEAR=$1
FILEC=$(echo "$DEPLOYEAR" | sed 's/\.ear//g')
APPNAME=${FILEC}${APPSERVERNUMBER}
echo "Deploying AppName -> $APPNAME"
${JAVA_BIN} -cp ${WL_JAR} weblogic.Deployer -adminurl t3://${HOST_NAME}:${HOST_PORT} -user ${HOST_USER} -password ${HOST_PASS} -targets ${SERVER} -deploy -upload ${TMP_DIR}${DEPLOYEAR} -name ${APPNAME}
echo -e "Deploy ${APPNAME} in $SERVER Done\n"
}
waitdep() {
T=0
M=40 # max time
while [ $T -lt $M ]; do
if [[ $(tail -n 30 $WL_LOGOUT |grep -ic "pms-online-lib") => 1 ]]; then
echo -e "Deploy done in $T seconds"
break
else
sleep 1
echo -ne "."
T=$(expr $T + 1)
fi
done
}
function checklog() {
F=$1
TERROR=0
LINES=800
TERROR=$(cat $F | grep -iv warning |grep -ic ERROR)
TERRORS=$(expr $TERROR + $TERRORS)
echo "File : ${F}, checking last $LINES lines, Found $TERROR errors"
echo -e "-----------------------------------------------------------------------------------------------------------------------------------------"
tail -${LINES} ${F}|grep -i error |grep -v -i warning | sort | uniq -c | sort -n
echo -e "-----------------------------------------------------------------------------------------------------------------------------------------\n"
}
function checkapp() {
CHK=$(curl -s -L $APPURL |grep -c credenziali)
echo -e "\n"
if [ "$CHK" -eq "1" ]; then
echo ".Deploy was a success" |tee -a $MSG
echo ".Found $TERRORS Total Errors" |tee -a $MSG
else
echo ".Deploy failed" |tee -a $MSG
echo ".Deploy failed, could not open page $APPURL " |tee -a $MSG
echo ".Found $TERROR Errors" |tee -a $MSG
fallback
fi
}
######## MAIN ##########
echo "Deploying $PACKAGE"
unzipDeployFile
backup
source $WLENV
for FILESDEP in $FILESDEP ; do
agentDeployer $FILESDEP
done
echo "Deploy Done, checking log file: $WL_LOG"
echo -e "\n-----------------------------------------------------------------------------------------------------------------------------------------\n"
echo "Waiting for deploy to finish..."
waitdep
echo "Checking log"
echo -e "\n-----------------------------------------------------------------------------------------------------------------------------------------\n"
checklog $WL_LOG
checklog $WL_LOGOUT
echo -e "\n-----------------------------------------------------------------------------------------------------------------------------------------\n"
echo "Checking applicatoin $APPURL "
checkapp