Jenkins使用pipline部署JAVA项目到远程服务器_pipeline 推送jar到其他服务器

79 阅读1分钟

下一篇文章预告:Jenkins+Ansible 自动化部署

node {
    //Jenkins的maven版本
    def mvnHome = tool 'maven3.6'

    //git分支
    def branchAll = "${env.branch}"
	def branch = "dev"
    if("${branchAll}"=='origin/master'||"${branchAll}"=='origin/dev'){
            def branchOut = branchAll.split("/")
            branch = branchOut[1]
    }

    //连接远程服务器进行发布,部署
    stage ('Pull & Run') {
       def remote = [:]
       remote.name = 'test'
       if("${branch}"=='release'){
       remote.host ='172.168.0.110'
       remote.user = 'root'
       remote.password ='123456'
       }else{
       remote.host ='172.168.0.111'
       remote.user = 'root'
       remote.password ='123456'
       }
       remote.allowAnyHosts= true
       if("${branch}"=='master'){
            writeFile file:'tempStart.sh', text:'''
               kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }') 
               if [  -d "xxx" ];then
                    cd /root/xxx
                    git reset --hard
                    git pull
               else
                    git clone -b master ssh://git@xxxxxxx.git
                    cd /root/xxx
               fi
               cd ./xxx/
               echo "编译打包";
               mvn clean install -U
               echo "代码质量检测";
               mvn sonar:sonar  
               cd ./target
               nohup java -jar -Xms512M -Xmx512M  -Dspring.profiles.active=*.jar >/dev/null &  
               if [ $? -eq 0 ]; then
                    echo "模块执行成功";
               else
                    echo "模块执行失败";
               fi
               '''
       }else ("${branch}"=='dev'){
            writeFile file:'tempStart.sh', text:'''
               kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }') 
               if [  -d "xxx" ];then
                    cd /root/xxx
                    git reset --hard
                    git pull
               else
                    git clone -b dev ssh://git@xxxxxxx.git
                    cd /root/xxx
               fi
                cd ./xxx/
               echo "编译打包";
               mvn clean install -U
               echo "代码质量检测";
               mvn sonar:sonar  
               cd ./target
               nohup java -jar -Xms512M -Xmx512M  -Dspring.profiles.active=test *-exe.jar >/dev/null &
               if [ $? -eq 0 ]; then
                    echo "模块执行成功";
               else
                    echo "模块执行失败";
               fi
               '''
       }
       sshScript remote: remote,script: "tempStart.sh"
    }
    //发起邮件
    stage("发送邮件"){
        echo "发送邮件"
        emailext body: '''
            <!DOCTYPE html>
            <html>
            <head>
                <meta charset="UTF-8" />
                <title>${ENV, var=&quot;JOB_NAME&quot;}-第${BUILD_NUMBER}次构建日志</title>
            </head>
            <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
                <a href="${PROJECT_URL}">${PROJECT_URL}</a>
                <hr size="2" width="100%" align="center" />
                <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
                    <tbody>
                        <tr>
                            <td>(本邮件由程序自动下发,请勿回复!)</td>
                        </tr>
                        <tr>
                            <td>
                                <h2>
                                    <font color="#FF0000">构建结果 - ${BUILD_STATUS}</font>
                                </h2>
                            </td>
                        </tr>
                        <tr>
                            <td><br /> <b>
                                    <font color="#0B610B">构建信息</font>
                                  </b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <ul>
                                    <li>项目名称:${PROJECT_NAME}</li>
                                    <li>GIT路径: xxxxxxx</li>
                                    <li>GIT分支: ${branch}</li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
                                    <li>触发原因:${CAUSE}</li>
                                    <li>docker地址:xxxxxx</li>
                                    <li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td> <b>
                                    <font color="#0B610B">变更信息:</font>
                                  </b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <ul>
                                    <li>上次构建成功后变化 : ${CHANGES_SINCE_LAST_SUCCESS}</li>
                                    <li>上次构建不稳定后变化 : ${CHANGES_SINCE_LAST_UNSTABLE}</li>
                                    <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                                    <li>变更集:${JELLY_SCRIPT}</a></li>
                                </ul>