天天看點

jenkins-流水線配置自動化部署

  • jenkins安裝配置請參考:https://blog.csdn.net/han949417140/article/details/101451542

一、流水線方式配置自動化部署

  • 建立一個流水線任務
jenkins-流水線配置自動化部署
  • General配置
    jenkins-流水線配置自動化部署
  • gitlab push代碼自動部署

    如需配置自動部署請移步jenkins安裝配置 2.5目錄下。裡面有詳細的配置說明

    jenkins-流水線配置自動化部署
  • 流水線配置
jenkins-流水線配置自動化部署

具體的腳本内容如下:

pipeline {
    agent {
        //指定此Pipeline将在動态Jenkins Slave中執行
        label 'DM-multiplecheck-service'
    }
    options {
        //設定管道運作的逾時時間,在此之後,Jenkins将中止管道
        timeout(time: 20, unit: 'MINUTES')
        // 失敗重試次數
        retry(2)
        //輸出時間戳
        timestamps()
    }
    environment {
        //建構分支 master、test
        // Brand='test'
        //定義Maven編譯環境 dev/test/prod
        ACTIVE = "test"
        //jar包名稱
        JAR_NAME = 'yss-datamiddle-multiplecheck.jar'
        //JOB所在根目錄,JOB_NAME
        WORKSPACE_PATH = "/opt/dataMiddle-service/workspace/${JOB_NAME}/"
    }
    stages {
        stage('備份jar包'){
			steps{
			    dir("${WORKSPACE_PATH}") {
			      sh '''
			         if [ -f "target/${JAR_NAME}" ];then
			            cp -r target/${JAR_NAME}  /opt/data_bak/jar_bak/$(date +%Y%m%d.%H:%M:%S)-${JAR_NAME}
			            echo "jar包備份成功..."
			         else
			            echo "備份的jar包不存在!"
			         fi
			      '''
				  sh '''
				  result=`find /opt/data_bak/jar_bak/ -mtime +10 -name "*-${JAR_NAME}"`
				  if [ -z "$result" ]
                  then
                      echo '不存在大于10天的 jar 包'
                  else
				      rm -rf $result
				  fi
				  '''
                } 
		    }
        }
		stage('擷取代碼'){
			steps{
				echo "拉取代碼"
				cleanWs()
				git branch: 'test', credentialsId: 'b0bf5539-d8a8-4edf-92c1-1709115c2cff', url: 'http://192.168.101.94:8081/Data-Middleground-Develop-Area/product-code/service/dataMiddle-multipleCheck.git'
			}
		}
        stage('Build project package') {
            steps {
                dir("${WORKSPACE_PATH}") {
				  echo "開始執行打包操作......."
                  //利用maven對項目進行build
                  sh "mvn -U -Dmaven.test.skip=true clean package"
               }
            }
        }
        stage('Run Application') {
            steps {
                dir("${WORKSPACE_PATH}") {
                  // 如果程式已經啟動,殺掉程序
				  sh '''
				    count=`ps -ef | grep ${JAR_NAME} | grep -v "grep" | wc -l`
                    if [ $count -gt 0 ]; then
                        ps aux|grep ${JAR_NAME}|grep -v grep|awk '{print $2}'|xargs kill -9
                    fi
                    '''
                  echo "啟動程式......."
                  //利用maven對項目進行build
                  sh '''
                  JENKINS_NODE_COOKIE=dontKillMe
                  nohup /opt/jdk-11.0.8/bin/java -jar -Xms4096m -Xmx4096m target/${JAR_NAME} --spring.profiles.active=${ACTIVE}  --server.port=30180 --debug > /opt/data_bak/logs/${JAR_NAME}.log 2>&1 & 
                  '''
              }
            }
        }
    }
    post {
        success {
             echo "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 建構成功"
        }
        failure {
            echo "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 建構失敗"
        }
    }
}
           

credentialsId擷取請參考:ttps://blog.csdn.net/qq_41838901/article/details/95483936

  • 建構代碼
    jenkins-流水線配置自動化部署

繼續閱讀