diff --git a/INSTALL.me b/INSTALL.me index 986ae5e..0131a84 100644 --- a/INSTALL.me +++ b/INSTALL.me @@ -29,9 +29,8 @@ Algunos prerrequisitos que se deben tener en consideración: - El usuario con el que se levantó Jenkins, debe ser el mismo owner para rdeployer. - Se debe tener acceso por SSH a los servidores donde estén las consolas WebLogic/JBoss/OSB desde el servidor de Jenkins. - Binarios de Weblogic, JBoss y de OSB/ESB. - - Tener instalado perl-XML-XPath (Deprecado con xmlUtil2) - ANSI Color para su uso en Jenkins y el plugin rdeployer. - - Tener instalado libxml2 (Nueva versión xmlUtil3) + - Tener instalado libxml2 v 2.7.8 en adelante. (Nueva versión xmlUtil3) Jenkins: - Plugin "Build Name and Description Setter" (Referencia: https://plugins.jenkins.io/build-name-setter/) - Plugin "AnsiColor" (Referencia: https://plugins.jenkins.io/ansicolor/) @@ -206,6 +205,7 @@ Debemos tener presente que los Jobs utilizan las siguientes partes: Nombre TYPEINST Opciones new + fix rollback Descripción Tipo de Instalación. diff --git a/ROADMAP b/ROADMAP index 8260773..c3533aa 100644 --- a/ROADMAP +++ b/ROADMAP @@ -1,58 +1,63 @@ ROADMAP rdeployer-plugin para JK,UC +------+--------+--------------+---------------------------------------------------------------------------------------- - TYPE VERSION IMPLEMENTACION DESCRIPCION + TYPE VERSION IMPLEMENTACION DESCRIPCION +------+--------+--------------+---------------------------------------------------------------------------------------- - 4.2 Modulo xmlUtil3.io standard + 4.2 Modulo xmlUtil3.io standard # Rev: -# 4.2.1 - 960922-1515 - (New) Se agrega xmlUtil3 como lector standard. -# - (New) Se incorpora timeout para conexiones JBoss, configurable en el conf de rdeployer. -# - (New) ANSICOLOR ahora se puede desactivar en conf. +# 4.2.1 - 960922-1515 - (New) Se agrega xmlUtil3 como lector standard. +# - (New) Se incorpora timeout para conexiones JBoss, configurable en el conf de rdeployer. +# - (New) ANSICOLOR ahora se puede desactivar en conf. # -# 4.2.2 - 140922-0120 - (Bug) Dependencia cuando es Rollback, de revisar componente, por lo cual ya no -# revisará si el componente existe en situaciones de RB. +# 4.2.2 - 140922-0120 - (Bug) Dependencia cuando es Rollback, de revisar componente, por lo cual ya no +# revisará si el componente existe en situaciones de RB. # -# 4.2.4 - 240922-1347 - (Bug) Módulo JBoss al momento de stop y start. -# - (New) Impresión de firma en txt, para complemento con Jenkins, -# usando un plugin llamado "Build Name and Description Setter". +# 4.2.4 - 240922-1347 - (Bug) Módulo JBoss al momento de stop y start. +# - (New) Impresión de firma en txt, para complemento con Jenkins, +# usando un plugin llamado "Build Name and Description Setter". # -# 4.2.6 - 101022-1535 - (Bug) Modulo para problemas con rollbacks con error, se crea temp para los puntos -# de montaje de cada componente. fnErrorExecute, fnEstructuraTemp +# 4.2.6 - 101022-1535 - (Bug) Modulo para problemas con rollbacks con error, se crea temp para los puntos +# de montaje de cada componente. fnErrorExecute, fnEstructuraTemp # -# 4.2.7 - 101022-2000 - (New) Funcion para obtener servers o instancias a nivel JBoss. +# 4.2.7 - 101022-2000 - (New) Funcion para obtener servers o instancias a nivel JBoss. # -# 4.2.8 - 120123-2011 - (Fix) Se adecua intepretacion de JBoss 7.2 en adelante, para modos kill. +# 4.2.8 - 120123-2011 - (Fix) Se adecua intepretacion de JBoss 7.2 en adelante, para modos kill. # -# 4.2.9 - 210323-1151 - (Fix) Se realiza validacion que existan los plugins de cada uno (Weblogic/ESB/Jboss) -# - (New) Imprime las instancias cuando no estan disponibles para Weblogic como WARN. -# 250423-1837 - (Fix) Cuando componente coincida con el prev, se omite su instalacion y solo -# se ejecutara el deploy. +# 4.2.9 - 210323-1151 - (Fix) Se realiza validacion que existan los plugins de cada uno (Weblogic/ESB/Jboss) +# - (New) Imprime las instancias cuando no estan disponibles para Weblogic como WARN. +# 250423-1837 - (Fix) Cuando componente coincida con el prev, se omite su instalacion y solo +# se ejecutara el deploy. +# 4.2.10 - 030523-2000 - (New) Se agrega opcion de instalacion FIX, para instalaciones etiquetadas como +# de tipo FIX. +# 090523-1642 - (New) Se agrega impresion de la version a utilidad xml para leer consoles.xml +# 240823-200 - (Fix) Se incorpora tipo de instalacion en las rutas cuando se instala componente +# y con la finalidad de que se identifique por path el tipo de instalacion. # -# 4.2.x - - (Dev) Construir modulo fnValidaEstructuraRB para prev con FIX. -# - (Dev) Checar estructura de xml, cuando es por RFC su instalacion. -# - (Dev) Programacion de URL usando la que despliega JK en el plugin. +# 4.2.x - - (Dev) Construir modulo fnValidaEstructuraRB para prev con FIX. +# - (Dev) Checar estructura de xml, cuando es por RFC su instalacion. +# - (Dev) Programacion de URL usando la que despliega JK en el plugin. - 4.1 Plugin Launcher compatibilidad con UrbanCode + 4.1 Plugin Launcher compatibilidad con UrbanCode # Rev: # 4.1.0 - 070622-1653 - Compatibilidad ahora con UrbanCode y Jenkins. -# 4.1.1 - 280622-1457 - Upgrade sobre el workspace/workdir en UC y JK +# 4.1.1 - 280622-1457 - Upgrade sobre el workspace/workdir en UC y JK - 4.0 Plugin con uso de ANSICOLOR - disable/enable config + 4.0 Plugin con uso de ANSICOLOR - disable/enable config # Rev: -# 4.0.2 - 041121-0856 - Opciones de stop para JBoss 7.2 en adelante (método kill) -# 4.0.4 - 051121-1859 - Se anexan mas catalogos de errores. -# 4.0.5 - 131121-1708 - Se actualiza modulo de busqueda de Aplicaciones (fnCheckWL) -# 4.0.8 - 141121-1900 - Parche en la forma de hacer instalaciones con undeploy/deploy -# 4.0.10 - 171121-0900 - Control sobre applist (fnCheckWL) en el conf de rdeployer -# y nuevo formato de rdeployer.conf -# 4.0.15 - 231121-0200 - Issues al pasar a instalacion tipo Ticket/RFC -# 4.0.16 - 231121-1130 - Si no existe XML, avanza a solo instalacion de JAR en OSB -# 4.0.17 - 031221-1430 - Nuevo file IO para firmas: txt2term.io V 0.5 -# 4.0.18 - 081221-0524 - Nuevo modulo para RB cuando se instala con OSB -# 4.0.19 - 131221-0205 - Fix en modulo de ESB, para instalaciones sin XML -# 4.0.20 - 161221-0324 - Nueva deteccion de errores de xmlUtil2 en rdeployer -# 4.0.21 - 020322-1713 - Cambios menores en parámetros para JBoss -# 4.0.22 - 110522-1432 - Se anexan campos en rdeployer.conf para configurar dominios -# 4.0.23 - 060622-1836 - Se coloca opcion de deshabilitar ANSICOLOR en el plugin en conf +# 4.0.2 - 041121-0856 - Opciones de stop para JBoss 7.2 en adelante (método kill) +# 4.0.4 - 051121-1859 - Se anexan mas catalogos de errores. +# 4.0.5 - 131121-1708 - Se actualiza modulo de busqueda de Aplicaciones (fnCheckWL) +# 4.0.8 - 141121-1900 - Parche en la forma de hacer instalaciones con undeploy/deploy +# 4.0.10 - 171121-0900 - Control sobre applist (fnCheckWL) en el conf de rdeployer +# y nuevo formato de rdeployer.conf +# 4.0.15 - 231121-0200 - Issues al pasar a instalacion tipo Ticket/RFC +# 4.0.16 - 231121-1130 - Si no existe XML, avanza a solo instalacion de JAR en OSB +# 4.0.17 - 031221-1430 - Nuevo file IO para firmas: txt2term.io V 0.5 +# 4.0.18 - 081221-0524 - Nuevo modulo para RB cuando se instala con OSB +# 4.0.19 - 131221-0205 - Fix en modulo de ESB, para instalaciones sin XML +# 4.0.20 - 161221-0324 - Nueva deteccion de errores de xmlUtil2 en rdeployer +# 4.0.21 - 020322-1713 - Cambios menores en parámetros para JBoss +# 4.0.22 - 110522-1432 - Se anexan campos en rdeployer.conf para configurar dominios +# 4.0.23 - 060622-1836 - Se coloca opcion de deshabilitar ANSICOLOR en el plugin en conf 3.1 Implementacion del modulo para Oracle Services Bus (OSB/ESB) # Rev: @@ -84,9 +89,9 @@ ROADMAP rdeployer-plugin para JK,UC # 2.1.3 - 121119-1015 - Issue en EstructuraRB # 2.1.4 - 080320-2358 - Issue EstructuraNew - 1.5 rdeployer para Weblogic + 1.5 rdeployer para Weblogic # Rev: -# 1.5.10 - 240418-0154 +# 1.5.10 - 240418-0154 # 1.5.11 - 310518-2005 # 1.5.12 - 190618-0057 # 1.5.14 - 030718-0000 diff --git a/rdeployer.sh b/rdeployer.sh index ef8eea3..268ced3 100644 --- a/rdeployer.sh +++ b/rdeployer.sh @@ -36,24 +36,24 @@ U_MES="$(date '+%m')" if [ "${PluginLauncher}" == "UrbanCode" ] then - if [ -f BNUMBER.prc ] - then - BN=$(cat BNUMBER.prc) - BN=$(expr $BN + 1) - echo ${BN} > BNUMBER.prc - WORKSPACE=${WORKDIR} - else - echo 1 > BNUMBER.prc - fi - - BUILD_NUMBER=$(cat BNUMBER.prc) + if [ -f BNUMBER.prc ] + then + BN=$(cat BNUMBER.prc) + BN=$(expr $BN + 1) + echo ${BN} > BNUMBER.prc + WORKSPACE=${WORKDIR} + else + echo 1 > BNUMBER.prc + fi + + BUILD_NUMBER=$(cat BNUMBER.prc) fi APPLOG=${APNAME}.${BUILD_NUMBER}.log # 230319-1528 APPID=${APNAME}${BUILD_NUMBER} # 070919-1736 #[ "${CICD}" == "Jenkins" ] && APPLOG=${APNAME}.${BUILD_NUMBER}.log # 230319-1528 140921-0836 #[ "${CICD}" == "Jenkins" ] && APPID=${APNAME}${BUILD_NUMBER} || APPID=${APNAME} # 070919-1736 140921-0836 -VERSION="4.2.9" +VERSION="4.2.10" export monthnames=(Invalid Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic) YEAR="$(date '+%Y')" MES=${monthnames[${U_MES#0}]} @@ -61,7 +61,7 @@ LOGAPHIST="${APNAME}.history" NRFC=$(echo ${RFC} | tr -d [:blank:]) # Se debe configurar en el job 2 variables: TYPEINST y RFC #TYPEINST - Parámetro de elección: -# Opciones: new | rollback +# Opciones: new | fix | rollback #RFC - Parámetro de Cadena export ORACLE_HOME=${OSB_HOME} export MW_HOME=${ORACLE_HOME} @@ -85,7 +85,7 @@ OPTIONS="$OPTIONS --command-timeout=${TimeOutDeploy}" OPTIONS="$OPTIONS --controller=${HOSTURL}" OPTIONS="$OPTIONS --user=${USER}" OPTIONS="$OPTIONS --password=${PASSWD}" -#OPTIONS="$OPTIONS --command-timeout $TimeOutDeploy" +#OPTIONS="$OPTIONS --command-timeout $TimeOutDeploy" #OPTIONS="$OPTIONS --commands='${SHA1},${ICMD},${CMD},${SHA1}'" msg "Creando la estructura para deployar:" "INFO" @@ -107,17 +107,17 @@ sleep 5 msg "Ejecutando deploy, espere un momento..." "INFO" echo "[ $(date) ]" >> ${APPLOG} echo "===== INFO/REDEPLOY APP =====" >> ${APPLOG} -if $mFORCE +if $mFORCE then - CMD="$CMD --force" - echo "Executing mode force in ${RTC}" >> ${APPLOG} - echo "Timeout configured: ${TimeOutDeploy}" >> ${APPLOG} - nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --commands="${SHA1},${ICMD},${CMD},${SHA1}" >> ${APPLOG} 2>&1 + CMD="$CMD --force" + echo "Executing mode force in ${RTC}" >> ${APPLOG} + echo "Timeout configured: ${TimeOutDeploy}" >> ${APPLOG} + nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --commands="${SHA1},${ICMD},${CMD},${SHA1}" >> ${APPLOG} 2>&1 else - echo "Executing mode deploy in ${RTC}" >> ${APPLOG} - echo "Timeout configured: ${TimeOutDeploy}" >> ${APPLOG} - CMD="$CMD --server-groups=${SRVNAMES}" - nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="${CMD}" >> ${APPLOG} 2>&1 + echo "Executing mode deploy in ${RTC}" >> ${APPLOG} + echo "Timeout configured: ${TimeOutDeploy}" >> ${APPLOG} + CMD="$CMD --server-groups=${SRVNAMES}" + nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="${CMD}" >> ${APPLOG} 2>&1 fi if [ $? -gt 0 ] @@ -129,9 +129,9 @@ then else msg "Deploy realizado." "OK" sleep 5 - #Detenemos el componente. - #fnStopJB - #sleep 5 + #Detenemos el componente. + #fnStopJB + #sleep 5 #Levantamos el componente. fnStartJB fi @@ -216,28 +216,28 @@ nohup ${JAVA_HOME}/bin/java -Xms${vMemoryIni} -Xmx${vMemoryMax} -cp ${WEBLOGIC_H if [ $? -gt 0 ] then - fnErrorExecute - #Levantamos el componente apagado. - fnStartWL - exit 1 + fnErrorExecute + #Levantamos el componente apagado. + fnStartWL + exit 1 else - msg "Deploy realizado." "OK" - sleep 5 - #WARNG=$(grep "Unable to contact" ${WORKSPACE}/${APPLOG}|wc -l) - WARNG=$(grep "Unable to contact" ${APPLOG}|wc -l) - #WARNG=$(grep "Target state: start failed on Server" ${WORKSPACE}/${APPLOG}|wc -l) - - if [ ${WARNG} -gt 0 ] - then - msg "Se encontraron que algunas instancias no estaban disponibles, checar salida del log en la url anteriormente mostrada" "WARN" - WARNINST=$(grep "Unable to contact" ${APPLOG}| awk '{print $5}'|sort|uniq) # 210323-1151 - msg "Instancias con problemas:" "WARN" - msg "${WARNINST}" "WARN" - vEXIT=4 - fi - #[ "$NPROD" == "1" ] && RTINST=$(dirname $(grep "Starting task with path" ${APPLOG} | awk -F":" '{print $4}')) - #Levantamos el componente. - fnStartWL + msg "Deploy realizado." "OK" + sleep 5 + #WARNG=$(grep "Unable to contact" ${WORKSPACE}/${APPLOG}|wc -l) + WARNG=$(grep "Unable to contact" ${APPLOG}|wc -l) + #WARNG=$(grep "Target state: start failed on Server" ${WORKSPACE}/${APPLOG}|wc -l) + + if [ ${WARNG} -gt 0 ] + then + msg "Se encontraron que algunas instancias no estaban disponibles, checar salida del log en la url anteriormente mostrada" "WARN" + WARNINST=$(grep "Unable to contact" ${APPLOG}| awk '{print $5}'|sort|uniq) # 210323-1151 + msg "Instancias con problemas:" "WARN" + msg "${WARNINST}" "WARN" + vEXIT=4 + fi + #[ "$NPROD" == "1" ] && RTINST=$(dirname $(grep "Starting task with path" ${APPLOG} | awk -F":" '{print $4}')) + #Levantamos el componente. + fnStartWL fi } @@ -301,10 +301,10 @@ fnCheckJB() # 300320-1858 if [ $(cat ${APPLOG} | grep ${APWAR} | wc -l) -ge 1 ] then msg "Aplicación existente." "DEBUG" - mFORCE=true + mFORCE=true else msg "La Aplicación no está instalada, se procede instalacion." "DEBUG" - mFORCE=false + mFORCE=false fi } @@ -318,15 +318,15 @@ fnCheckWL() # 111110-1745 msg "${APNAME}" "DEBUG" echo "===== LIST APP =====" >> ${APPLOG} # Nueva forma de listar aplicaciones | 131121-1708 - nohup ${JAVA_HOME}/bin/java -Xms${vMemoryIni} -Xmx${vMemoryMax} -cp ${WEBLOGIC_HOME}/server/lib/weblogic.jar weblogic.Deployer ${OPTIONS3} -listapps >> ${APPLOG} 2>&1 + nohup ${JAVA_HOME}/bin/java -Xms${vMemoryIni} -Xmx${vMemoryMax} -cp ${WEBLOGIC_HOME}/server/lib/weblogic.jar weblogic.Deployer ${OPTIONS3} -listapps >> ${APPLOG} 2>&1 cAppCount=$(grep ${APNAME} ${APPLOG} | wc -l) #msg "${APNAME}: ${cAppCount}" "DEBUG" - + if [ ${cAppCount} -ge 1 ] then - msg "Aplicación existente." "OK" + msg "Aplicación existente." "OK" else - msg "La Aplicación no está instalada." "WARN" + msg "La Aplicación no está instalada." "WARN" fi else msg "Undeploy activado, se omite Check" "WARN" @@ -339,20 +339,20 @@ fnStartJB() # 300320-1858 echo "===== START APP =====" >> ${APPLOG} if [ ${vTYPJB} == "DOMAIN" ] # Issue: 240922-1347 then - echo "Starting in ${vTYPJB} Mode" >> ${APPLOG} - for Group in ${SRVNAMES/,/ } - do - ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:start-servers" >> ${APPLOG} 2>&1 # 050620-0930 - sleep 10 - #${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:start-servers" >> ${APPLOG} 2>&1 - msg "Componente Encendido - ${Group}." "OK" - done + echo "Starting in ${vTYPJB} Mode" >> ${APPLOG} + for Group in ${SRVNAMES/,/ } + do + ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:start-servers" >> ${APPLOG} 2>&1 # 050620-0930 + sleep 10 + #${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:start-servers" >> ${APPLOG} 2>&1 + msg "Componente Encendido - ${Group}." "OK" + done elif [ ${vTYPJB} == "STANDALONE" ] then - nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command=":reload" >> ${APPLOG} 2>&1 - msg "Componente reload." "OK" + nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command=":reload" >> ${APPLOG} 2>&1 + msg "Componente reload." "OK" else - msg "revisar tipo de JBoss" "INFO" + msg "revisar tipo de JBoss" "INFO" fi } @@ -376,14 +376,14 @@ fnCheckInstJB() { echo "Host Controller and Servers on JBoss:" >> ${APPLOG} for Grp in ${1} - do + do for HC in $(${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="ls host=") do - grpInfo=$(${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/host=${HC}:resolve-expression-on-domain" | grep ${Grp} | awk '{print $1,$5,$7}'| sed 's/{//g'|sed 's/"//g') - echo "${grpInfo}" | grep .. >> ${APPLOG} + grpInfo=$(${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/host=${HC}:resolve-expression-on-domain" | grep ${Grp} | awk '{print $1,$5,$7}'| sed 's/{//g'|sed 's/"//g') + echo "${grpInfo}" | grep .. >> ${APPLOG} done done - + } @@ -402,33 +402,33 @@ fnStopJB() # 300320-1858 if [ ${vTYPJB} == "DOMAIN" ] then - #echo "Execute stop in ${vTYPJB}" >> ${APPLOG} - for Group in ${SRVNAMES/,/ } - do - echo "Stop Group Server: $Group" >> ${APPLOG} - fnCheckInstJB ${Group} - - if [ $(echo "${vJBVerRel} >= 7.2" | bc) -eq 1 ] # 120123-2011 - #if [ "${vJBVerRel}" == "7.2" -o "${vJBVerRel}" == "7.4" ] - then - nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:kill-servers" >> ${APPLOG} 2>&1 - else - nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:stop-servers" >> ${APPLOG} 2>&1 # 050620-0930 - fi - - if [ $? -gt 0 ] #101019-1211 Valida si se apagó o no. - then - msg "No se pudo detener la aplicación (Group ${Group}), probablemente no existe la aplicación o ya se enuentra abajo, se continua con el deploy" "WARN" - else + #echo "Execute stop in ${vTYPJB}" >> ${APPLOG} + for Group in ${SRVNAMES/,/ } + do + echo "Stop Group Server: $Group" >> ${APPLOG} + fnCheckInstJB ${Group} + + if [ $(echo "${vJBVerRel} >= 7.2" | bc) -eq 1 ] # 120123-2011 + #if [ "${vJBVerRel}" == "7.2" -o "${vJBVerRel}" == "7.4" ] + then + nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:kill-servers" >> ${APPLOG} 2>&1 + else + nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command="/server-group=${Group}:stop-servers" >> ${APPLOG} 2>&1 # 050620-0930 + fi + + if [ $? -gt 0 ] #101019-1211 Valida si se apagó o no. + then + msg "No se pudo detener la aplicación (Group ${Group}), probablemente no existe la aplicación o ya se enuentra abajo, se continua con el deploy" "WARN" + else msg "Componente Apagado - ${Group}." "OK" - fi + fi done elif [ "${vTYPJB}" == "STANDALONE" ] then - msg "JBoss standalone, se continua deploy" "INFO" - #nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command=":stop-servers" >> ${APPLOG} 2>&1 + msg "JBoss standalone, se continua deploy" "INFO" + #nohup ${JB_HOME}/bin/jboss-cli.sh ${OPTIONS} --command=":stop-servers" >> ${APPLOG} 2>&1 fi } @@ -448,7 +448,7 @@ fnStopWL() then msg "No se pudo detener la aplicación, probablemente no existe la aplicación o ya se enuentra abajo, se continua con el deploy" "WARN" else - msg "Componente Apagado." "OK" + msg "Componente Apagado." "OK" fi else msg "Undeploy activado, se omite Stop" "WARN" @@ -466,7 +466,7 @@ fnErrorExecute() fnEstructuraTemp # 1010221505 exit 1 # 190619 Bug detectado, hacia doble rollback cuando la opcion era rollback ;; - "new") + "new"|"fix") #030523-2000 [ "$NPROD" == "0" ] && msg "Aplicando Rollback a la estructura Generada:" "DEBUG" [ "$NPROD" == "0" ] && fnEstructuraRB ;; @@ -476,51 +476,51 @@ fnErrorExecute() fnError() { - for f in $(ls -lad ${APHOME}/data/*.dat|awk '{print $9}') - do - source ${f} - CNTotal=0 - CNT1=0 - CNT2=0 - CNT3=0 - #200719-0023 Variable de workspace, usado desde Jenkins. - # Antes: ${WORKSPACE}/${APPLOG} - [ "${ERR1}" != "" ] && CNT1=$(grep "${ERR1}" ${APPLOG} | wc -l) - [ "${ERR2}" != "" ] && CNT2=$(grep "${ERR2}" ${APPLOG} | wc -l) - [ "${ERR3}" != "" ] && CNT3=$(grep "${ERR3}" ${APPLOG} | wc -l) - #echo "===== ERROR CATALOG =====" >> ${APPLOG} - #echo "Error1:${CNT1} Error2:${CNT2} Error3:${CNT3}" >> ${APPLOG} - CNTotal=$((CNT1 + CNT2 + CNT3)) - - #if [ $CNT1 -gt 0 ] || [ $CNT2 -gt 0 ] || [ $CNT3 -gt 0 ] - if [ $CNTotal -gt 0 ] - then - msg "$(basename $f | awk -F'.' '{print $1}') -> $ERR1... $ERR2... $ERR3" "ERROR" - msg "$SOL" "SOLUCION" - return 1 - fi - done + for f in $(ls -lad ${APHOME}/data/*.dat|awk '{print $9}') + do + source ${f} + CNTotal=0 + CNT1=0 + CNT2=0 + CNT3=0 + #200719-0023 Variable de workspace, usado desde Jenkins. + # Antes: ${WORKSPACE}/${APPLOG} + [ "${ERR1}" != "" ] && CNT1=$(grep "${ERR1}" ${APPLOG} | wc -l) + [ "${ERR2}" != "" ] && CNT2=$(grep "${ERR2}" ${APPLOG} | wc -l) + [ "${ERR3}" != "" ] && CNT3=$(grep "${ERR3}" ${APPLOG} | wc -l) + #echo "===== ERROR CATALOG =====" >> ${APPLOG} + #echo "Error1:${CNT1} Error2:${CNT2} Error3:${CNT3}" >> ${APPLOG} + CNTotal=$((CNT1 + CNT2 + CNT3)) + + #if [ $CNT1 -gt 0 ] || [ $CNT2 -gt 0 ] || [ $CNT3 -gt 0 ] + if [ $CNTotal -gt 0 ] + then + msg "$(basename $f | awk -F'.' '{print $1}') -> $ERR1... $ERR2... $ERR3" "ERROR" + msg "$SOL" "SOLUCION" + return 1 + fi + done } fnValida() { - msg "Validando que exista componente en la ruta repositorio:" "INFO" - - if [ ! -f ${RTJK}/${APWAR} ] - then - msg "Ruta: ${RTJK}/${APWAR}" "DEBUG" - msg "No hay componente war dentro de la ruta de Jenkins, favor de copiar componente" "ERROR" - exit 1 - else - msg "Validación exitosa." "OK" - msg "$(md5sum ${RTJK}/${APWAR})" "DEBUG" - #md5sum ${RTJK}/${APWAR} |awk '{print $1}' > version.txt # 240922-1347 - fi - - if [ "${NRFC}" == "" ] && [ $NPROD != 1 ] - then - msg "No se coloco el numero de RFC, favor de colocar el RFC cuando se ejecute el job." "ERROR" - exit 1 - fi + msg "Validando que exista componente en la ruta repositorio:" "INFO" + + if [ ! -f ${RTJK}/${APWAR} ] + then + msg "Ruta: ${RTJK}/${APWAR}" "DEBUG" + msg "No hay componente war dentro de la ruta de Jenkins, favor de copiar componente" "ERROR" + exit 1 + else + msg "Validación exitosa." "OK" + msg "$(md5sum ${RTJK}/${APWAR})" "DEBUG" + #md5sum ${RTJK}/${APWAR} |awk '{print $1}' > version.txt # 240922-1347 + fi + + if [ "${NRFC}" == "" ] && [ $NPROD != 1 ] + then + msg "No se coloco el numero de RFC, favor de colocar el RFC cuando se ejecute el job." "ERROR" + exit 1 + fi } @@ -543,7 +543,7 @@ if [ -f ${APHOME}/conf/rdeployer.conf ] then . ${APHOME}/conf/rdeployer.conf msg "Archivo de Configuracion global cargado." "OK" - [ "${PluginLauncher}" == "UrbanCode" ] && AutoColorOutPut=false + [ "${PluginLauncher}" == "UrbanCode" ] && AutoColorOutPut=false else msg "No se encuentra el archivo de configuracion Global: ${APHOME}/conf/rdeployer.conf" "ERROR" exit 1 @@ -551,13 +551,13 @@ fi if [ -f ${APHOME}/util/txt2term.io ] then - . ${APHOME}/util/txt2term.io + . ${APHOME}/util/txt2term.io else - msg "No se encuentra archivo de utilidad: ${APHOME}/util/txt2term.io" "ERROR" - exit 1 + msg "No se encuentra archivo de utilidad: ${APHOME}/util/txt2term.io" "ERROR" + exit 1 fi - + msg "Validando archivo de configuracion:" "INFO" if [ -f ${APDIR}/${APNAME}.conf ] @@ -573,9 +573,9 @@ fi if [ "${ServerDomainHostname}" != "" ] then - LOGURL="${https}${ServerDomainHostname}:${ServerDomainPort}/job/${JOB_NAME}/" + LOGURL="${https}${ServerDomainHostname}:${ServerDomainPort}/job/${JOB_NAME}/" else - LOGURL=${JOB_URL} + LOGURL=${JOB_URL} fi #. ${APHOME}/util/colors.io @@ -588,15 +588,15 @@ vCOMP=$1 if [ "${PROJECTCONF}" == "${vCOMP}" ] then - vFirmaXMLRemote=$(ssh -q ${IPSRV} "md5sum ${RTINST}/${vCOMP}" | awk '{print $1}') - vFirmaXMLLocal=$(md5sum ${RTJK}/${vCOMP} | awk '{print $1}') - - if [ "${vFirmaXMLLocal}" != "${vFirmaXMLRemote}" ] - then - fnEstructuraNew ${vCOMP} - else - msg "XML sin modificaciones, se omite copiado" "INFO" - fi + vFirmaXMLRemote=$(ssh -q ${IPSRV} "md5sum ${RTINST}/${vCOMP}" | awk '{print $1}') + vFirmaXMLLocal=$(md5sum ${RTJK}/${vCOMP} | awk '{print $1}') + + if [ "${vFirmaXMLLocal}" != "${vFirmaXMLRemote}" ] + then + fnEstructuraNew ${vCOMP} + else + msg "XML sin modificaciones, se omite copiado" "INFO" + fi fi } @@ -607,11 +607,13 @@ vFirmaActual=$(ssh -q ${IPSRV} "md5sum ${RTINST}/${vCOMP}" | awk '{print $1}') # vFirmaNewComponente=$(md5sum ${RTJK}/${vCOMP} | awk '{print $1}') #250423-1837 if [ "${vFirmaActual}" != "${vFirmaNewComponente}" ]; then #250423-1837 - RUTA_COPIA="${RTINST}/${YEAR}/${MES}/${NRFC}" + RUTA_COPIA="${RTINST}/${YEAR}/${MES}/${NRFC}/${TYPEINST}" # 240823-200 msg "Creando comando para estructura de directorios:" "INFO" msg "${RTINST}" "DEBUG" msg "${YEAR}" "DEBUG" msg "${MES}" "DEBUG" + [ "${TYPEINST}" == "fix" ] && msg "FIX" "DEBUG" # 030523-2000 + CMD1="mkdir -p ${RUTA_COPIA}" ssh -q ${IPSRV} "${CMD1}" # 080320-2358 Se actualiza la forma de estructura con mas validaciones. @@ -637,8 +639,8 @@ if [ "${vFirmaActual}" != "${vFirmaNewComponente}" ]; then #250423-1837 if [ $? -gt 0 ] then - msg "Error al copiar el componente ${vCOMP}" "ERROR" - exit 1 + msg "Error al copiar el componente ${vCOMP}" "ERROR" + exit 1 fi msg "Ejecutando comandos de estructura:" "INFO" @@ -664,7 +666,6 @@ fnEstructuraTemp() fnEstructuraRB() { msg "Buscando prev en backups para montar como .prev" "INFO" -#APWARBCK=$(ssh -q ${IPSRV} "find ${RTINST}/.bck/ -name '${APWAR}.prev.*'" | head -1) APWARBCK=$(ssh -q ${IPSRV} "ls -ltr ${RTINST}/.bck/${APWAR}.prev.*| tail -1") msg "Creando comando para borrado de componente actual" "INFO" @@ -696,31 +697,44 @@ fnRBCopyESB() # 081221-0524 msg "Copiando componentes para deploy Rollback de ESB:" "INFO" scp -qrpo ConnectTimeout=${TimeOutSSH} ${IPSRV}:${RTINST}/${APWAR} ${RTJK}/. -if [ $? -gt 0 ] +if [ -f ${RTJK}/${PROJECTCONF} ] then - msg "No se puede extraer componente para Rollback" "ERROR" - exit 1 +# 231121-1130: Checa archivo XML + vXML=${RTJK}/${PROJECTCONF} + msg "XML Config: ${PROJECTCONF}" "DEBUG" else - scp -qrpo ConnectTimeout=${TimeOutSSH} ${IPSRV}:${RTINST}/${PROJECTCONF} ${RTJK}/. + msg "XML No encontrado, se realiza instalación sólo del JAR sin configuración" "WARN" + vXML="None" + msg "${vXML}" "DEBUG" +fi - if [ $? -gt 0 ] - then - msg "No se puede extraer componente para Rollback" "ERROR" - exit 1 - fi +if [ $? -gt 0 ] +then + msg "No se puede extraer componente para Rollback" "ERROR" + exit 1 +else + scp -qrpo ConnectTimeout=${TimeOutSSH} ${IPSRV}:${RTINST}/${PROJECTCONF} ${RTJK}/. + + if [ $? -gt 0 ] && [ ${vXML} != "None" ] + then + msg "No se puede extraer componente para Rollback" "ERROR" + exit 1 + else + msg "No se puede extraer xml, se continua con componente WAR" "WARN" + fi fi - + msg "Componentes validados." "OK" } fnValidateFile() { FileVal=$1 - + if [ ! -f ${FileVal} ]; then msg "No existe Archivo ${FileVal}, favor de validar" "ERROR" else - msg "${FileVal} seems right!" "DEBUG" + msg "${FileVal} seems right!" "DEBUG" fi } @@ -731,23 +745,24 @@ fnGetConsole() #CONN="$(${APHOME}/util/xmlUtil.io ${APHOME}/conf ${NODE})" xUTIL=xmlUtil3 #260520-1157 fnValidateFile ${APHOME}/util/${xUTIL}.io -msg "Versión XML Util: ${xUTIL}" "INFO" #260520-1157 +xVerUTIL=$( ${APHOME}/util/${xUTIL}.io --version) #090523-1642 +msg "Versión XML Util: ${xVerUTIL}" "INFO" #260520-1157, 090523-1642 CONN="$(${APHOME}/util/${xUTIL}.io ${APHOME}/conf ${NODE} $1)" case "${CONN}" in - "ERR1") - msg "XML sintaxis incorrecta" "ERROR" - exit 1 - ;; - "ERR2") - msg "Archivo XML no encontrado" "ERROR" - exit 1 - ;; - "ERR3") - msg "Datos de usuario y password no encontrados para NODO ${NODE}" "ERROR" - exit 1 - ;; + "ERR1") + msg "XML sintaxis incorrecta" "ERROR" + exit 1 + ;; + "ERR2") + msg "Archivo XML no encontrado" "ERROR" + exit 1 + ;; + "ERR3") + msg "Datos de usuario y password no encontrados para NODO ${NODE}" "ERROR" + exit 1 + ;; esac msg "Datos de consola encontrados." "OK" @@ -770,24 +785,25 @@ fnTipoEstructuraInstall() msg "Tipo de Instalación: ${TYPEINST}" "INFO" case $1 in -"new") - msg "Número de RFC: ${NRFC}" "INFO" - fnEstructuraNew ${APWAR} - if [ -f ${RTJK}/${PROJECTCONF} ]; then - [ "${DODEPLOY}" == "esb" ] && fnEstructuraNewESB ${PROJECTCONF} - else - [ "${DODEPLOY}" == "esb" ] && msg "XML No encontrado, se ignora archivo. Probable instalación sin XML" "WARN" - fi - - ;; +"new"|"fix") #030523-2000 + msg "Número de RFC: ${NRFC}" "INFO" + fnEstructuraNew ${APWAR} + if [ -f ${RTJK}/${PROJECTCONF} ]; then + [ "${DODEPLOY}" == "esb" ] && fnEstructuraNewESB ${PROJECTCONF} + else + [ "${DODEPLOY}" == "esb" ] && msg "XML No encontrado, se ignora archivo. Probable instalación sin XML" "WARN" + fi + + ;; + "rollback") - msg "Número de RFC del que falló: ${NRFC}" "INFO" - NRFC=$(ssh -q ${IPSRV} "ls -lad ${RTINST}/${APWAR}.prev" | awk '{print $11}' | awk -F "/" '{print $8}') - msg "Número de RFC de RollBack: ${NRFC}" "INFO" - fnEstructuraRB ${APWAR} - [ "${DODEPLOY}" == "esb" ] && fnEstructuraRB ${PROJECTCONF} - [ "${DODEPLOY}" == "esb" ] && fnRBCopyESB - ;; + msg "Número de RFC del que falló: ${NRFC}" "INFO" + NRFC=$(ssh -q ${IPSRV} "ls -lad ${RTINST}/${APWAR}.prev" | awk '{print $11}' | awk -F "/" '{print $8}') + msg "Número de RFC de RollBack: ${NRFC}" "INFO" + fnEstructuraRB ${APWAR} + [ "${DODEPLOY}" == "esb" ] && fnEstructuraRB ${PROJECTCONF} + [ "${DODEPLOY}" == "esb" ] && fnRBCopyESB + ;; esac } @@ -795,150 +811,160 @@ esac fnPluginInfo() { case $1 in - "weblogic") - echo "===== PLUGIN VERSION =====" >> ${APPLOG} - if [ -f ${WEBLOGIC_HOME}/server/lib/weblogic.jar ]; then - ${JAVA_HOME}/bin/java -Xms${vMemoryIni} -Xmx${vMemoryMax} -cp ${WEBLOGIC_HOME}/server/lib/weblogic.jar weblogic.Deployer -version >> ${APPLOG} - else - msg "Plugin no encontrado en la ruta ${WEBLOGIC_HOME}" "ERROR" - exit 1 - fi - - if [ $? -gt 0 ] - then - msg "no se puede cargar plugin, favor de validar salida del log y revisar si existen los binarios" "ERROR" - exit 1 - fi - ;; - - "jboss") # 210323-1151 - echo "===== PLUGIN VERSION =====" >> ${APPLOG} - - if [ -f ${JB_HOME}/bin/jboss-cli.sh ]; then - msg "JBoss CLI Detected" >> ${APPLOG} - else - msg "No se encuentra el archivo plugin para Jboss en ${JB_HOME}" "ERROR" - exit 1 - fi - ;; - - "esb") - if [ -f ${OSB_HOME}/osb/tools/configjar/setenv.sh ] - then - echo "===== PLUGIN VERSION =====" >> ${APPLOG} - source ${OSB_HOME}/osb/tools/configjar/setenv.sh >> ${APPLOG} - if [ $? -gt 0 ] - then + "weblogic") + echo "===== PLUGIN VERSION =====" >> ${APPLOG} + if [ -f ${WEBLOGIC_HOME}/server/lib/weblogic.jar ]; then + ${JAVA_HOME}/bin/java -Xms${vMemoryIni} -Xmx${vMemoryMax} -cp ${WEBLOGIC_HOME}/server/lib/weblogic.jar weblogic.Deployer -version >> ${APPLOG} + else + msg "Plugin no encontrado en la ruta ${WEBLOGIC_HOME}" "ERROR" + exit 1 + fi + + if [ $? -gt 0 ] + then + msg "no se puede cargar plugin, favor de validar salida del log y revisar si existen los binarios" "ERROR" + exit 1 + fi + ;; + + "jboss") # 210323-1151 + echo "===== PLUGIN VERSION =====" >> ${APPLOG} + + if [ -f ${JB_HOME}/bin/jboss-cli.sh ]; then + msg "JBoss CLI Detected" >> ${APPLOG} + else + msg "No se encuentra el archivo plugin para Jboss en ${JB_HOME}" "ERROR" + exit 1 + fi + ;; + + "esb") + if [ -f ${OSB_HOME}/osb/tools/configjar/setenv.sh ] + then + echo "===== PLUGIN VERSION =====" >> ${APPLOG} + source ${OSB_HOME}/osb/tools/configjar/setenv.sh >> ${APPLOG} + if [ $? -gt 0 ] + then msg "No se puede aplicar set de variables necesarias para ESB, favor de revisar salida de log" "ERROR" exit 1 - else - #msg "Configuracion cargada para esb" "OK" - ${JAVA_HOME}/bin/java weblogic.version|head -2|tail -1 >> ${APPLOG} - fi - else - msg "No existe el archivo para cargar configuracion de esb, favor de validar" "ERROR" - exit 1 - fi - ;; + else + #msg "Configuracion cargada para esb" "OK" + ${JAVA_HOME}/bin/java weblogic.version|head -2|tail -1 >> ${APPLOG} + fi + else + msg "No existe el archivo para cargar configuracion de esb, favor de validar" "ERROR" + exit 1 + fi + ;; esac } fnNPROD() { - [ $1 -eq 1 ] && RTINST=$(dirname $(grep "Starting task with path" ${APPLOG} | awk -F":" '{print $4}')) + [ $1 -eq 1 ] && RTINST=$(dirname $(grep "Starting task with path" ${APPLOG} | awk -F":" '{print $4}')) } msg() { case $2 in - "ERROR") - U_HOUR="$(date '+%H%M%S')" - if [ "${AutoColorOutPut}" = true ] - then - printf "\e[31m[$U_HOUR] [$2]\e[0m $1\e[0m\n" - else - printf "[$U_HOUR] [$2] $1\n" - fi - ;; - "WARN") - U_HOUR="$(date '+%H%M%S')" - if [ "${AutoColorOutPut}" = true ] - then - printf "\e[33m[$U_HOUR] [$2]\e[0m $1\e[0m\n" - else - printf "[$U_HOUR] [$2] $1\n" - fi - ;; - "OK") - U_HOUR="$(date '+%H%M%S')" - if [ "${AutoColorOutPut}" = true ] - then - printf "\e[32m[$U_HOUR] [$2]\e[0m $1\e[0m\n" - else - printf "[$U_HOUR] [$2] $1\n" - fi - ;; - "DEBUG") + "ERROR") + U_HOUR="$(date '+%H%M%S')" + if [ "${AutoColorOutPut}" = true ] + then + printf "\e[31m[$U_HOUR] [$2]\e[0m $1\e[0m\n" + else + printf "[$U_HOUR] [$2] $1\n" + fi + ;; + "WARN") U_HOUR="$(date '+%H%M%S')" - if [ "${AutoColorOutPut}" = true ] - then - printf "\e[35m[$U_HOUR] [$2]\e[0m $1\e[0m\n" - else - printf "[$U_HOUR] [$2] $1\n" - fi + if [ "${AutoColorOutPut}" = true ] + then + printf "\e[33m[$U_HOUR] [$2]\e[0m $1\e[0m\n" + else + printf "[$U_HOUR] [$2] $1\n" + fi + ;; + "OK") + U_HOUR="$(date '+%H%M%S')" + if [ "${AutoColorOutPut}" = true ] + then + printf "\e[32m[$U_HOUR] [$2]\e[0m $1\e[0m\n" + else + printf "[$U_HOUR] [$2] $1\n" + fi + ;; + "DEBUG") + U_HOUR="$(date '+%H%M%S')" + if [ "${AutoColorOutPut}" = true ] + then + printf "\e[35m[$U_HOUR] [$2]\e[0m $1\e[0m\n" + else + printf "[$U_HOUR] [$2] $1\n" + fi + ;; + "BANNER") + U_HOUR="$(date '+%H%M%S')" + if [ "${AutoColorOutPut}" = true ] + then + printf "\e[30;48;5;82m[$1]\e[0m\n" + else + printf "[$U_HOUR] [$2] $1\n" + fi ;; - *) - U_HOUR="$(date '+%H%M%S')" - printf "[$U_HOUR] [$2] $1\n" - ;; + *) + U_HOUR="$(date '+%H%M%S')" + printf "[$U_HOUR] [$2] $1\n" + ;; esac } # MAIN # +msg "rdeployer para ${PluginLauncher}, cocinando instalaciones desde 2018" "BANNER" [ "${PluginLauncher}" == "UrbanCode" ] && AutoColorOutPut=false if [ "${AutoColorOutPut}" = true ] then - msg "Versión de rdeployer: \e[1m$VERSION\e[0m" "INFO" + msg "Versión de rdeployer: \e[1m$VERSION\e[0m" "INFO" else - msg "Versión de rdeployer: $VERSION" "INFO" + msg "Versión de rdeployer: $VERSION" "INFO" fi -fnConfig +fnConfig fnValida msg "Plugin Launcher: ${PluginLauncher}" "INFO" case $DODEPLOY in "weblogic") - fnPluginInfo weblogic - msg "Plugin cargado: Weblogic_Deployer" "INFO" - fnGetConsole Weblogic - [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 - fnDeployerWL ${NPROD} # Variable NPROD obtenido de Jenkins - fnFirma ${NPROD} ${APWAR} # Variable NPROD obtenido de Jenkins - ;; + fnPluginInfo weblogic + msg "Plugin cargado: Weblogic_Deployer" "INFO" + fnGetConsole Weblogic + [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 + fnDeployerWL ${NPROD} # Variable NPROD obtenido de Jenkins + fnFirma ${NPROD} ${APWAR} # Variable NPROD obtenido de Jenkins + ;; "jboss") - fnPluginInfo jboss # 210323-1151 - msg "Plugin cargado: JBoss_CLI" "INFO" - fnGetConsole JBoss - [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 - fnDeployerJB ${NPROD} - fnFirma ${NPROD} ${APWAR} # Variable NPROD obtenido de Jenkins - ;; + fnPluginInfo jboss # 210323-1151 + msg "Plugin cargado: JBoss_CLI" "INFO" + fnGetConsole JBoss + [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 + fnDeployerJB ${NPROD} + fnFirma ${NPROD} ${APWAR} # Variable NPROD obtenido de Jenkins + ;; "esb") - fnPluginInfo esb - msg "Plugin cargado: Oracle_Services_Bus" "INFO" - fnGetConsole ESB - [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 - fnDeployESB ${NPROD} - fnFirma ${NPROD} "${PROJECTCONF} ${APWAR}" # Variable NPROD obtenido de Jenkins - ;; + fnPluginInfo esb + msg "Plugin cargado: Oracle_Services_Bus" "INFO" + fnGetConsole ESB + [ "$NPROD" == "0" ] && fnTipoEstructuraInstall ${TYPEINST} # 120521-0111 + fnDeployESB ${NPROD} + fnFirma ${NPROD} "${PROJECTCONF} ${APWAR}" # Variable NPROD obtenido de Jenkins + ;; *) - msg "Archivo CONF no tiene propiedad DODEPLOY, favor de configurar: DODEPLOY=[weblogic|jboss|esb]" "ERROR" - ;; + msg "Archivo CONF no tiene propiedad DODEPLOY, favor de configurar: DODEPLOY=[weblogic|jboss|esb]" "ERROR" + ;; esac exit ${vEXIT}