3.3使用jenkins管理模塊化springboot項目(增強2.1和2.2)

 

  • 項目摘要:

本文基於文檔https://blog.csdn.net/qq_25337221/article/details/106160024

https://blog.csdn.net/qq_25337221/article/details/106185232編寫。

主要是在之前的基礎上添加prometheus-service項目。本實例仍然是入門項目。

  • 項目具體實施:
  1. 自由風格方式
  1. 修改build前shell

echo "Stopping SpringBoot Application"

pids=$(ps -ef | grep 0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')

if [ -n "$pids" ]; then

    echo $pids

    for pid in $pids; do

         echo $pid

        kill -9 $pid   

    done

fi

2. 修改build後shell

#!/bin/bash -ile

userServiceProject=user-service-0.0.1-SNAPSHOT.jar

prometheusServiceProject=prometheus-service-0.0.1-SNAPSHOT.jar

userServicePath=springboot-demo-freestyle/user-service 

prometheusServicePath=springboot-demo-freestyle/prometheus-service

echo "拷貝文件"

rm -rf /usr/local/src/java/*

cp  /var/lib/jenkins/workspace/$userServicePath/target/$userServiceProject /usr/local/src/java/

cp  /var/lib/jenkins/workspace/$prometheusServicePath/target/$prometheusServiceProject /usr/local/src/java/ 

echo "切換路徑"

cd /usr/local/src/java/

BUILD_ID=dontKillMe

echo "執行"

nohup java -jar $userServiceProject & 

nohup java -jar $prometheusServiceProject &

echo "啓動成功!"

 2.pipline方式

  1. Pipline腳本

pipeline{

    agent any

     tools {

        maven 'maven3.6.3'

        jdk 'jdk1.8'

    }

     environment{

        TASK_NAME="springboot-demo-pipline"

        ROOT_PROJECT_PATH="user-system"

        USER_SERVICE_PROJECT="user-service-0.0.1-SNAPSHOT.jar"

        USER_SERVICE_PROJECT_NAME="user-service"

        PROMETHEUS_SERVICE_PROJECT="prometheus-service-0.0.1-SNAPSHOT.jar"

        PROMETHEUS_SERVICE_PROJECT_NAME="prometheus-service"

    }

    options{

        buildDiscarder(logRotator(numToKeepStr: '10'))

        timestamps()

    }

      triggers{

         pollSCM('H/1 * * * *')

    }

    stages{

        stage('Preparation'){

            steps{

                echo 'pulling code'

                 /*git code*/

            }

        }

        stage('Build'){

            steps{

           script{

           echo 'Stopping SpringBoot Application'

            sh "ps -ef | grep 0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print \$2}' | xargs -i kill -9 {}"

            echo 'starting build'

            sh 'mvn -f $ROOT_PROJECT_PATH  clean install -Dmaven.test.skip=true'

            echo 'deleteing old project'      

            sh 'rm -rf /usr/local/src/java/*'

            echo 'copy new project'

            sh 'cp /var/lib/jenkins/workspace/$TASK_NAME/$USER_SERVICE_PROJECT_NAME/target/$USER_SERVICE_PROJECT /usr/local/src/java/'

            sh 'cp /var/lib/jenkins/workspace/$TASK_NAME/$PROMETHEUS_SERVICE_PROJECT_NAME/target/$PROMETHEUS_SERVICE_PROJECT /usr/local/src/java/'

            echo "starting project" 

            sh 'JENKINS_NODE_COOKIE=dontKillMe nohup java -jar /usr/local/src/java/$USER_SERVICE_PROJECT >log.txt  2>&1 &'

            sh 'JENKINS_NODE_COOKIE=dontKillMe nohup java -jar /usr/local/src/java/$PROMETHEUS_SERVICE_PROJECT >log.txt  2>&1 &'

            echo "startup success!"

           }             

         }     

      }

  }

      post {

        success {

            emailext (

                subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",

                body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>

                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",

                to: "[email protected],[email protected]",

                from: "[email protected]"

            )

          slackSend channel: "#test-jenkins", message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'           

        }

        failure {

            emailext (

                subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",

                body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>

                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",

                to: "[email protected],[email protected]",

                from: "[email protected]"

            )

            slackSend channel: "#test-jenkins", message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'

        }

    }

}

  • 參考鏈接:
  1. 批量殺進程: https://blog.csdn.net/ctypyb2002/article/details/78519014

本內容由安康學院“雨季”原創。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章