IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> jenkins自动部署java 探活检测 -> 正文阅读

[系统运维]jenkins自动部署java 探活检测

启动并设置端口

nohup java -jar jenkins.war --httpPort=9000 > jenkins.log 2>&1 &

此处略过创建流水线项目的流程……

//使用java和Groovy 编写脚本语言
def checkHealth(){
    i = 0
    while(true) {
    	// 使用沙盒模式要写类的全路径名称
        Thread.sleep(1000)
        def response = httpRequest contentType: 'APPLICATION_JSON',
          httpMode: "GET",
          // 设置允许响应的状态,不设置500和404的状态会终止部署
          validResponseCodes: '100:599',
          customHeaders: [
           [name: "TOKEN", value: "B456skjasdjkf="]
        ],
        url: 'https://localhost:8080'
        if(response.status == 200){
            return
        }else if(i >= 15){
        	// 设置失败响应
           currentBuild.result = 'FAILURE'
        }
        println("Status: "+response.status)
        ++i
    }
}
// pipeline脚本编写
pipeline {
    agent any
	// 加载插件
    tools {
        // Install the Maven version configured as "M3" and add it to the path.
        maven "maven3.6.3"
    }

    stages {
        stage('Build') {
            steps {
                // Get some code from a GitHub repository
                // 在流水线使用git配置,见图1
                git credentialsId: 'xxxxx', url: 'gitleye@xxxx.git'

                // Run Maven on a Unix agent.
                sh "mvn -Dmaven.test.failure.ignore=true clean package"

                // To run Maven on a Windows agent, use
                // bat "mvn -Dmaven.test.failure.ignore=true clean package"
            }

            post {
                // If Maven was able to run the tests, even if some of the test
                // failed, record the test results and archive the jar file.
                success {
                    echo '打包成功!move jar...'
                    sh 'mv /home/lylh/.jenkins/workspace/demo/target/demo-0.0.1-SNAPSHOT.jar /data/jar/demo.jar'
                }
            }
        }
        stage('Reboot') {
            steps {
                echo '部署成功!'
                // 使用这段代码在jenkins部署成功后,不会kill掉这里面启动的进程
                withEnv(['JENKINS_NODE_COOKIE=background_job']) {
				sh """
					sh /data/jar/leyoupin/start.sh
				   """
			    }
            }
        }
        stage('Health') {
            steps {
                script{
                	// 调用探活方法
                    checkHealth()
                    echo '启动成功! (?ω?)'
                }
            }
        }
    }
}

流水线配置(图1)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

启动Shell脚本代码

#!/bin/sh
#print hello world in the console window
APP_NAME=demo.jar
APP_PATH=/data/jar/demo

is_exist(){
	pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'`
	if [ "$pid" != ""  ];then
	  echo "exist"
	  return 1;
	else
	  return 0;
	fi
}

start(){
	is_exist
	flag=$?
	if [[ $flag == 1 ]];then
	  echo "${APP_NAME} is already running. execute kill……"
  	  num=0
	  #echo "$flag"
	  kill $pid
	  while [[ $flag == 1 && $num -lt 10 ]]
	  do
   	    #echo "$pid"
	    echo "${APP_NAME} killing... ${num}"
	    is_exist
	    flag=$?
 	    let "num++"
	    sleep 1
	  done
	  is_exist
	  if [ $? == 1 ];then
		  echo 'force kill!'
		  kill -9 $pid
	  fi
	  echo "${APP_NAME} is stop"
	else
	  echo "${APP_NAME} is not running"
	fi
	
	cd ${APP_PATH}
	file=`find . -name ${APP_NAME%.jar}_temp.jar`
#	echo "$file";
	if [ "$file" != "" ];then
		rm $APP_NAME
		mv leyoupin_temp.jar $APP_NAME
	fi
	
#	nohup java -jar $APP_NAME --spring.profiles.active=test2 > nohup.log 2>&1 &
	nohup java -jar $APP_NAME --spring.profiles.active=test2 --logging.config=classpath:logback-console.xml > nohup.log 2>&1 &
	echo "$APP_PATH/$APP_NAME starting sucess"

}
start

流水线部署成功

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:06:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:48:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码