Explorar o código

feat: jenkins

Jayhaw hai 5 meses
pai
achega
a7061bed86
Modificáronse 3 ficheiros con 183 adicións e 2 borrados
  1. 80 0
      Jenkinsfile
  2. 102 0
      Launch.sh
  3. 1 2
      src/main/resources/application.yml

+ 80 - 0
Jenkinsfile

@@ -0,0 +1,80 @@
+pipeline{
+    agent any
+    environment {
+        // 目标主机
+        dsthost = "192.168.50.21"
+        // 目标目录
+        dstroot = "/opt/jenkins/wf-platform-equipment-automation"
+        // 凭证ID
+        credentials = 'jayhaw'
+        // Java 运行参数
+        java_opts = "-Xms512m -Xmx1024m"
+    }
+    options {
+        // 不允许同时执行流水线, 防止同时访问共享资源等
+        disableConcurrentBuilds()
+        // 显示具体的构建流程时间戳
+        timestamps()
+    }
+
+
+    stages{
+        stage('Prepare') {
+            steps{
+                echo "1. Prepare Stage"
+                checkout scm
+                //sh "echo $ref"
+                sh "printenv"
+                script {
+                    sh 'ls -l'
+                }
+            }
+        }
+        stage('Maven'){
+            steps{
+                echo "2. Maven Stage"
+                withMaven(
+                       globalMavenSettingsConfig: 'stongmaven'
+                    ) {
+
+                      // Run the maven build
+                      sh "mvn  clean install  package -U -Dmaven.test.failure.ignore"
+
+                    }
+//                 script{
+                    //                     //sh "cat /etc/os-release"
+                    //
+                    //                     sh "mvn -Dmaven.test.failure.ignore clean  package"
+                    //                 }
+            }
+        }
+        stage('Deploy'){
+            steps{
+                echo "3. Deploy Stage"
+                script{
+                    def _pom = readMavenPom file: 'pom.xml'
+                    sh "echo ${_pom.getVersion()}"
+                    _version = _pom.getVersion()
+                    _artifactId = _pom.getArtifactId()
+                    sh "sed -i 's/<API_NAME>/${_artifactId}-${_version}/' Launch.sh"
+                    sh "sed -i 's/<JAVA_OPTS>/${java_opts}/' Launch.sh"
+                    //sh "scp hello-0.0.1-SNAPSHOT.jar"
+                    withCredentials([usernamePassword(credentialsId: 'stong_test_jenkins',  passwordVariable:  'PASSWORD', usernameVariable: 'USERNAME')]) {
+                        def remote = [:]
+                        remote.name = "dest"
+                        remote.host = env.dsthost
+                        remote.allowAnyHosts = true
+                        remote.user = USERNAME
+                        remote.password = PASSWORD
+                        sshCommand remote: remote, command: "mkdir -p ${env.dstroot}"
+                        sshPut remote: remote, from: 'Launch.sh', into: "${env.dstroot}"
+                        sshPut remote: remote, from: "target/app.jar", into: "${env.dstroot}"
+                        sshCommand remote: remote, command: "chmod +x ${env.dstroot}/Launch.sh"
+                        sshCommand remote: remote, command: "cd ${env.dstroot} && ./Launch.sh restart"
+                    }
+                }
+            }
+        }
+
+    }
+}

+ 102 - 0
Launch.sh

@@ -0,0 +1,102 @@
+#!/bin/sh
+CWD=$(cd $(dirname $0); pwd)
+
+
+API_NAME=<API_NAME>
+JAR_NAME=$CWD/app\.jar
+#PID  代表是PID文件
+PID=$CWD/$API_NAME\.pid
+SKYWALKING_JAVA_AGENT=-javaagent:/opt/skywalking/agent/skywalking-agent.jar
+
+#使用说明,用来提示输入参数
+usage() {
+    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
+    exit 1
+}
+
+#检查程序是否在运行
+is_exist(){
+  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
+  #如果不存在返回1,存在返回0
+  if [ -z "${pid}" ]; then
+   return 1
+  else
+    return 0
+  fi
+}
+
+#启动方法
+start(){
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo ">>> ${JAR_NAME} is already running PID=${pid} <<<"
+  else
+    echo $SKYWALKING_JAVA_AGENT
+    java_agent=SKYWALKING_JAVA_AGENT
+    if [[ $SKYWALKING_JAVA_AGENT ]]; then
+      echo 'Success'
+      java_agent="$SKYWALKING_JAVA_AGENT -Dskywalking.agent.service_name=$API_NAME"
+    fi
+    java_agent = "$java_agent -Dskywalking.agent.service_name=$API_NAME"
+    echo $java_agent
+    nohup java <JAVA_OPTS> -jar $JAR_NAME >/dev/null 2>&1 &
+    echo $! > $PID
+    echo ">>> start $JAR_NAME successed PID=$! <<<"
+   fi
+  }
+
+#停止方法
+stop(){
+  #is_exist
+  pidf=$(cat $PID)
+  #echo "$pidf"
+  echo ">>> api PID = $pidf begin kill $pidf <<<"
+  kill $pidf
+  rm -rf $PID
+  sleep 2
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo ">>> api 2 PID = $pid begin kill -9 $pid  <<<"
+    kill -9  $pid
+    sleep 2
+    echo ">>> $JAR_NAME process stopped <<<"
+  else
+    echo ">>> ${JAR_NAME} is not running <<<"
+  fi
+}
+
+#输出运行状态
+status(){
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
+  else
+    echo ">>> ${JAR_NAME} is not running <<<"
+  fi
+}
+
+#重启
+restart(){
+  stop
+  start
+}
+
+#根据输入参数,选择执行对应方法,不输入则执行使用说明
+case "$1" in
+  "start")
+    start
+    ;;
+  "stop")
+    stop
+    ;;
+  "status")
+    status
+    ;;
+  "restart")
+    restart
+    ;;
+  *)
+    usage
+    ;;
+esac
+exit 0

+ 1 - 2
src/main/resources/application.yml

@@ -88,8 +88,7 @@ server:
     max-http-post-size: 10485760
     allow-unescaped-characters-in-url: true
 
-  servlet:
-    context-path: /wfauto
+
 feign:
   hystrix:
     enabled: true