Kaynağa Gözat

Merge branch 'master' of http://git.platomix.net/aokunsang/platomix-gmetry-pdf

aokunsang 3 hafta önce
ebeveyn
işleme
affcd72d29
2 değiştirilmiş dosya ile 177 ekleme ve 0 silme
  1. 170 0
      Jenkinsfile
  2. 7 0
      pom.xml

+ 170 - 0
Jenkinsfile

@@ -0,0 +1,170 @@
+pipeline{
+	agent any
+	
+	//node {
+		//customWorkspace ''  //自定义工作空间
+	//}
+		
+	parameters{
+		choice(
+			name: 'mode', 
+			choices: ['deploy','rollback'], 
+			description: '请选择发布或者回滚?注意:回滚到最近成功构建的版本。'
+		)
+	}
+	
+	environment{
+		CI = "true"
+		JAR_NAME = "platomix-gmetry-pdf"
+		PROJECT_NAME = "platomix-gmetry-pdf"
+		PACKAGE_PROJECT_FILE = "${env.WORKSPACE}\\${PROJECT_NAME}\\target\\${JAR_NAME}.jar"
+		PROJECT_FOLDER = "C:\\platomix\\projects\\${JAR_NAME}\\${env.BRANCH_NAME}"
+		RUN_PROJECT_FILE = "${PROJECT_FOLDER}\\${JAR_NAME}.jar"
+		BAK_PROJECT_FILE = "${PROJECT_FOLDER}\\bak\\${JAR_NAME}-bak.jar"
+		PROJECT_LOG_FOLDER = "${PROJECT_FOLDER}\\logs"
+		
+		MAVEN_HOME = "C:\\platomix\\component\\apache-maven-3.6.3"
+		GIT_HOME = "C:\\platomix\\component\\git-2.12.0.2"
+	}
+	
+	options{
+		timestamps()   //日志时间	
+		
+		disableConcurrentBuilds() //禁止并行
+		
+        timeout(time: 30, unit: 'MINUTES')  //流水线的超时时间设置30分钟
+	}
+	
+	//triggers{}
+	
+	stages {
+		stage("初始准备"){
+			steps {
+				echo "1.项目名称: ${env.JAR_NAME}"
+				echo "2.项目目录: ${env.PROJECT_FOLDER}"
+				echo "3.项目备份文件: ${env.BAK_PROJECT_FILE}"
+				echo "清理临时文件目录开始.."
+				script{
+					try{
+						dir("${env.WORKSPACE}@tmp") {
+					      deleteDir()
+					    }
+					    dir("${env.WORKSPACE}@script") {
+					      deleteDir()
+					    }
+					    dir("${env.WORKSPACE}@script@tmp") {
+					      deleteDir()
+					    }
+						cleanWs()  //删除${WORKSPACE}目录
+					}catch(err){}
+				}
+			    echo "清理临时文件目录结束.."
+			}
+		}
+		
+		stage("拉取代码"){
+			when {
+                environment name: 'mode',value: 'deploy'
+            }
+			steps {
+				echo "开始拉取代码,当前分支:${env.BRANCH_NAME}"
+				git branch: "${env.BRANCH_NAME}", credentialsId: 'f14bc12d-2f9c-4227-92cc-9b4d41a1ebac', url: 'http://git.platomix.net/aokunsang/platomix-gmetry-pdf.git'
+			}
+		}
+		
+		stage("编译打包"){
+			when {
+                environment name: 'mode',value: 'deploy'
+            }
+			steps {
+				echo "开始构建项目,构建BuildNumber:${env.BUILD_NUMBER}"
+				bat "${env.MAVEN_HOME}\\bin\\mvn clean package -e -U -Dmaven.test.skip=true"
+			}
+		}
+		
+		stage("停止服务"){
+			steps {
+				script{
+					try{
+						bat "${env.PROJECT_FOLDER}\\stop.bat"
+					}catch(err){}
+				}
+				echo "停止服务完成!"
+			}
+		}
+		
+		stage("JAR包备份"){
+			when {
+                environment name: 'mode',value: 'deploy'
+            }
+			
+			steps {
+				script{
+	            	def projectFile = "${env.RUN_PROJECT_FILE}"
+	            	if(fileExists(projectFile) == true){
+	            		bat "move ${projectFile} ${env.BAK_PROJECT_FILE}"
+	            	}
+	            	bat "move ${env.PACKAGE_PROJECT_FILE} ${projectFile}"
+				}
+			}
+		}
+		
+		stage("代码回滚"){
+			when {
+                environment name: 'mode',value: 'rollback'
+            }
+            steps {
+            	echo '开始回滚代码...'
+            	script {
+            		def rollbackFile = "${env.BAK_PROJECT_FILE}"
+            		if(fileExists(rollbackFile) == true){
+            			bat "echo f | xcopy ${rollbackFile} ${env.RUN_PROJECT_FILE} /y"
+		                echo "代码回滚已完成!"
+            		}else {
+            			error("代码回滚失败,暂无备份JAR包。")
+            		}
+            	}
+            }
+		}
+		
+		stage("启动服务"){
+            steps {
+            	echo "正在启动服务,请稍等..."
+                script{
+					try{
+						bat "call ${env.PROJECT_FOLDER}\\start.bat"
+						sleep(time:5, unit:"SECONDS")
+						timeout(time: 10, unit: 'SECONDS'){
+							bat "${env.GIT_HOME}\\usr\\bin\\tail -f ${PROJECT_LOG_FOLDER}\\info.log"
+						}
+					}catch(err){}
+				}
+                echo "启动服务完成!"
+	       }
+		}
+	}
+	
+	post{
+		always {
+			echo "always"
+		}
+		success {
+			script {
+				try{
+					bat "taskkill /f /im tail.exe"
+				}catch(err){}
+				currentBuild.description = "构建成功!";
+			}
+		}
+		failure {
+			script {
+				currentBuild.description = "构建失败!";
+			}
+		}
+		aborted {
+			script {
+				currentBuild.description = "构建取消!";
+			}
+		}
+	}
+}

+ 7 - 0
pom.xml

@@ -64,4 +64,11 @@
 			</plugin>
 		</plugins>
 	</build>
+	<repositories>
+		<repository>
+			<id>platomix-release</id>
+			<name>私有Maven仓库</name>
+			<url>https://windata.platomix.net/nexus/repository/maven-public/</url>
+		</repository>
+	</repositories>
 </project>