zoukankan      html  css  js  c++  java
  • jenkins 构建部署(soa)

    1、全局工具配置

    2、soa端job配置

    /opt/script/deploy-soa-transfer-21.sh

    #!/bin/sh
    
    echo $1
    
    projectname=$1
    projectdir="/opt/soa/${projectname}"
    tar_name="${projectname}.tar.gz"
    rm -rf ${projectdir}/*.tar.gz
    mkdir -p ${projectdir}
    /usr/bin/rsync -avzP www@***.***.***.***::rsync_pro_womaiwms/${projectname}/*.tar.gz ${projectdir}/${projectname}.tar.gz  # ***是jenkins服务器ip

    以上是jenkins构建soa项目tar包,下面是部署启动项目,另外新建一个job

    /opt/script/deploy-soa-only.sh

    #!/bin/sh
    
    echo $1
    
    projectname=$1
    projectdir="/opt/soa/${projectname}"
    tar_name="${projectname}.tar.gz"
    
    
    
    root_file=root$(date +'%Y%m%d_%H%M%S')
    default_file="default"
    latest_file="latest"
    
    
    if [ ! -f "${projectdir}/${tar_name}" ]; then
        echo "error!  ================== ${projectdir}/${tar_name} is not exist"
        exit  -1;
    fi
    
    
    mkdir -p ${projectdir}/${root_file}
    tar -zxvf ${projectdir}/${tar_name} -C ${projectdir}/${root_file}
    
    echo "unzip success, will restart soa server!"
    #sh ${projectdir}/${default_file}/bin/stop.sh
    sh /opt/script/soa/soa-one.sh ${projectname} stop
    
    unlink ${projectdir}/$latest_file
    rm -rf ${projectdir}/$latest_file
    
    mv ${projectdir}/$default_file ${projectdir}/$latest_file
    ln -s ${projectdir}/${root_file}  ${projectdir}/${default_file}
    
    echo "****start startup soa****"
    #sh ${projectdir}/${default_file}/bin/start.sh
    sh /opt/script/soa/soa-one.sh ${projectname} start
    /opt/script/soa/soa-one.sh
    #!/bin/bash
    
    
    if [ "$2" != "start" ] && [ "$2" != "stop" ]; then
            echo "ERROR: Please input 2 argument: start or stop"
            exit -1;
    fi
    
    projectname=$1
    
    sh /opt/soa/${projectname}/default/bin/server.sh $2

     server.sh脚本

    #!/bin/bash
    cd `dirname $0`
    if [ "$1" = "start" ]; then
        sh ./start.sh
    else
        if [ "$1" = "stop" ]; then
            sh ./stop.sh
        else
            if [ "$1" = "debug" ]; then
                sh ./start.sh debug
            else
                if [ "$1" = "restart" ]; then
                    sh ./restart.sh
                else
                    if [ "$1" = "dump" ]; then
                        sh ./dump.sh
                    else
                        echo "ERROR: Please input argument: start or stop or debug or restart or dump"
                        exit 1
                    fi
                fi
            fi
        fi
    fi

    dump.sh

    #!/bin/bash
    cd `dirname $0`
    BIN_DIR=`pwd`
    cd ..
    DEPLOY_DIR=`pwd`
    CONF_DIR=$DEPLOY_DIR/conf
    
    
    . "$BIN_DIR"/env.sh
    
    
    PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$CONF_DIR" |awk '{print $2}'`
    if [ -z "$PIDS" ]; then
        echo "ERROR: The $SERVER_NAME does not started!"
        exit 1
    fi
    
    
    
    DUMP_DIR=$LOGS_DIR/dump
    if [ ! -d $DUMP_DIR ]; then
        mkdir $DUMP_DIR
    fi
    DUMP_DATE=`date +%Y%m%d%H%M%S`
    DATE_DIR=$DUMP_DIR/$DUMP_DATE
    if [ ! -d $DATE_DIR ]; then
        mkdir $DATE_DIR
    fi
    
    echo -e "Dumping the $SERVER_NAME ...c"
    for PID in $PIDS ; do
        jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1
        echo -e ".c"
        jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
        echo -e ".c"
        jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
        echo -e ".c"
        jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
        echo -e ".c"
        jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
        echo -e ".c"
        jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
        echo -e ".c"
        jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
        echo -e ".c"
        if [ -r /usr/sbin/lsof ]; then
        /usr/sbin/lsof -p $PID > $DATE_DIR/lsof-$PID.dump
        echo -e ".c"
        fi
    done
    if [ -r /bin/netstat ]; then
    /bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/iostat ]; then
    /usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/mpstat ]; then
    /usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/vmstat ]; then
    /usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/free ]; then
    /usr/bin/free -t > $DATE_DIR/free.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/sar ]; then
    /usr/bin/sar > $DATE_DIR/sar.dump 2>&1
    echo -e ".c"
    fi
    if [ -r /usr/bin/uptime ]; then
    /usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1
    echo -e ".c"
    fi
    echo "OK!"
    echo "DUMP: $DATE_DIR"
    View Code

     env.sh

    CLASS_NAME="com.***.soa.service.launcher.Provider"
    CONF_NAME="conf/applicationContext-dubbo.xml"
    
    if [ -z "$SERVER_NAME" ]; then
        SERVER_NAME=`sed '/dubbo:application/!d;s/.*="//;s/".*//' $CONF_NAME | tr -d '
    '`
    fi
    if [ -z "$SERVER_NAME" ]; then
        SERVER_NAME=`hostname`
    fi
    if [ -z "SERVER_PORT" ]; then
        SERVER_PORT=`sed '/dubbo:protocol.*port/!d;s/.*port="//;s/".*//' $CONF_NAME | tr -d '
    '`
    fi
    
    #LOGS_DIR=""
    LOGS_DIR="/opt/logs/soa/${SERVER_NAME}/"
    
    
    if [ ! -n "$LOGS_DIR" ]; then
        LOGS_DIR=$DEPLOY_DIR/logs
    fi
    if [ ! -d $LOGS_DIR ]; then
        mkdir $LOGS_DIR
    fi
    
    echo $SERVER_NAME $SERVER_PORT $CLASS_NAME  $CONF_NAME  $LOGS_DIR
    
    export LD_LIBRARY_PATH=/usr/local/bdb/lib
    View Code

    restart.sh

    #!/bin/bash
    cd `dirname $0`
    sh ./stop.sh
    sh ./start.sh

    start.sh

    #!/bin/bash
    cd `dirname $0`
    BIN_DIR=`pwd`
    cd ..
    DEPLOY_DIR=`pwd`
    CONF_DIR=$DEPLOY_DIR/conf
    
    . "$BIN_DIR"/env.sh
    
    
    PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$CONF_DIR" |awk '{print $2}'`
    if [ -n "$PIDS" ]; then
        echo "ERROR: The $SERVER_NAME already started!"
        echo "PID: $PIDS"
        exit 1
    fi
    
    if [ -n "$SERVER_PORT" ] && [ $SERVER_PORT -gt 0 ]; then
        echo 'netstat -tln | grep "$SERVER_PORT" | wc -l'
        SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
        if [ $SERVER_PORT_COUNT -gt 0 ]; then
            echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
            exit 1
        fi
    fi
    
    
    echo $SERVER_NAME $SERVER_PORT $CLASS_NAME $LOGS_DIR $CONF_NAME
    
    
    STDOUT_FILE=$LOGS_DIR/stdout.log
    STDERR_FILE=$LOGS_DIR/stderr.log
    echo  $LOGS_DIR $STDOUT_FILE $STDERR_FILE
    
    LIB_DIR=$DEPLOY_DIR/lib
    LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "
    " ":"`
    
    JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
    JAVA_DEBUG_OPTS=""
    if [ "$1" = "debug" ]; then
        JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
    fi
    JAVA_JMX_OPTS=""
    if [ "$1" = "jmx" ]; then
        JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
    fi
    JAVA_MEM_OPTS=""
    BITS=`file $JAVA_HOME/bin/java | grep 64-bit`
    if [ -n "$BITS" ]; then
        let memTotal=`cat /proc/meminfo |grep MemTotal|awk '{printf "%d", $2/1024 }'`
        if [ $memTotal -gt 2500 ];then
            JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./base_java_pid<pid>.hprof"
        else
            JAVA_MEM_OPTS=" -server -Xmx1g -Xms1g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./base_java_pid<pid>.hprof"
        fi
    else
        JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./base_java_pid<pid>.hprof"
    fi
    
    echo -e "Starting the $SERVER_NAME ...c"
    nohup /usr/java/default/bin/java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS $CLASS_NAME 1>>${STDOUT_FILE} 2>>${STDERR_FILE}  &
    
    COUNT=0
    NUM=0
    while [ $COUNT -lt 1 ]; do
        echo -e ".c"
        sleep 1
        if [ -n "$SERVER_PORT" ] && [ "$SERVER_PORT" -gt 0 ]; then
        echo 'echo status | nc 127.0.0.1 $SERVER_PORT -i 1 | grep -c OK'
            COUNT=`echo status | nc 127.0.0.1 $SERVER_PORT -i 1 | grep -c OK`
        else
            COUNT=`ps  --no-heading -C java -f --width 1000 | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
        fi
    
        if [ $COUNT -gt 0 ]; then
        break
        fi
    
        let "NUM++"
        #echo -n "$NUM "
    
        if [ $NUM -gt 10 ]; then
        echo "ERROR!"
        echo `cat $STDERR_FILE`
            exit -1
        fi
    
    done
    
    PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$DEPLOY_DIR" | awk '{print $2}'`
    echo "PID: $PIDS"
    echo "STDOUT: $STDOUT_FILE"
    echo "STDERR: $STDERR_FILE"
    
    echo "OK!"
    View Code

    stop.sh 

    #!/bin/bash
    cd `dirname $0`
    BIN_DIR=`pwd`
    cd ..
    DEPLOY_DIR=`pwd`
    CONF_DIR=$DEPLOY_DIR/conf
    
    
    . "$BIN_DIR"/env.sh
    
    
    PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$CONF_DIR" |awk '{print $2}'`
    if [ -z "$PIDS" ]; then
        echo "ERROR: The $SERVER_NAME does not started!"
        exit 1
    fi
    
    if [ "$1" != "skip" ]; then
        sh $BIN_DIR/dump.sh
    fi
    
    echo -e "Stopping the $SERVER_NAME ...c"
    for PID in $PIDS ; do
        kill -9 $PID > /dev/null 2>&1
    done
    
    COUNT=0
    while [ $COUNT -lt 1 ]; do    
        echo -e ".c"
        sleep 1
        COUNT=1
        for PID in $PIDS ; do
            PID_EXIST=`ps --no-heading -p $PID`
            if [ -n "$PID_EXIST" ]; then
                COUNT=0
                break
            fi
        done
    done
    echo "OK!"
    echo "PID: $PIDS"
    View Code

    distribution.xml

    <?xml version="1.0" encoding="utf-8"?>
    <assembly
            xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
        <id>release</id>
        <formats>
            <format>zip</format>
            <format>tar.gz</format>
        </formats>
        <includeBaseDirectory>false</includeBaseDirectory>
        <fileSets>
            <fileSet>
                <directory>target/classes</directory>
                <outputDirectory>conf</outputDirectory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.txt</include>
                </includes>
            </fileSet>
            <fileSet>
                <lineEnding>unix</lineEnding>
                <directory>src/main/bin</directory>
                <outputDirectory>bin</outputDirectory>
            </fileSet>
        </fileSets>
        <dependencySets>
            <dependencySet>
                <outputDirectory>lib</outputDirectory>
                <scope>runtime</scope>
            </dependencySet>
        </dependencySets>
    </assembly>
  • 相关阅读:
    JS日期格式转换
    VMware虚拟化集群的配置(一)
    网络初级篇之STP(概念原理)
    运维学习篇之jenkins的安装(CentOS7)
    网络初级篇之配置telnet登录网络设备(实验)
    Linux操作篇之OpenKM的安装(汉化)
    网络初级篇之网络设备的FTP(原理与实验)
    网络初级篇之直连路由与静态路由(原理与实验)
    网络初级篇之DHCP原理与配置(原理与实验)
    网络初级篇之OSPF(二)实验
  • 原文地址:https://www.cnblogs.com/wangzhanhua/p/10364836.html
Copyright © 2011-2022 走看看