Jenkins结合gitee自动化部署SpringBoot项目

安装

安装教程

插件选择

Gitee Plugin

配置

  • 源码管理
    填写源码地址 注意:请确保genkins所在的服务器有权限git拉取远程仓库代码,如果不可以请参考ssh配置
    centos 配置ssh拉取远程git代码

源码管理

  • 构建触发器
    1.勾选Gitee webhook 触发构建
    2.生成webhook密码

    构建触发器

     

    3.在gitee项目管理中配置webhook

    gitee配置webhook

  • 构建

    使用MAVEN构建

     

    如果没有配置maven请先进系统配置中配置,maven肯定要jdk,所以还需要配置jdk环境

    全局工具配置

     

    填写maven信息

     

    JDK配置

     

    配置ssh服务器信息

    配置ssh

     

    ssh配置

     

    通过ssh远程推送文件

     

    推送文件并执行命令


    下面代码大概意思是吧当前构建完成目录下的源文件去除前缀发送到远程服务器的指定目录,并且执行命令,shell下的sh文件是项目文件

 

配置所需的代码↓

#Source files 源文件
shell/*.sh
#Remove prefix 移除前缀
shell/
#Remote directory 远程目录
/home/jenkins/moodle/
#Exec command 执行命令

#在添加一个Transfer Set
#Source files 源文件
moodle-admin/target/moodle-admin-1.0-SNAPSHOT.jar
#Remove prefix 移除前缀
moodle-admin/target/
#Remote directory 远程目录
/home/jenkins/moodle/admin
#Exec command 执行命令
cd /home/jenkins/moodle
chmod 777 admin.sh
mv admin.sh admin/my.sh
cd admin
./my.sh restart

#以此类推,如果有多个模块需要启动则添加多个jar
#Source files 源文件
moodle-client/target/moodle-client-1.0-SNAPSHOT.jar
#Remove prefix 移除前缀
moodle-client/target/
#Remote directory 远程目录
/home/jenkins/moodle/client
#Exec command 执行命令
cd /home/jenkins/moodle
chmod 777 client.sh
mv client.sh client/my.sh
cd client
./my.sh restart

项目结构

项目中shell/admin.sh代码↓

#!/bin/sh
#定义程序名 及jar包的名 请替换成自己的
PROJECT_NAME=moodle-admin-1.0-SNAPSHOT.jar
## 编写判断程序是否正在运行的方法
isExist(){
      ## 首先查找进程号
    pid=$(ps -ef | grep ${PROJECT_NAME} | grep -v "grep" | awk '{print $2}')
    ## 如果进程号不存在,则返回0 否则返回1
    if [ -z "${pid}" ]; then
        return 0
    else
        return 1
    fi
}
## 编写启动程序方法
start(){
      ## 调用 判断程序是否正在运行的方法
    isExist
    ## 判断方法返回值是否等于0 ,等于则不存在
    if [ $? -eq "0" ]; then
        echo "${PROJECT_NAME} is starting ......"
        nohup java -jar ${PROJECT_NAME} --spring.profiles.active=prod > ./startup.log &
        echo "${PROJECT_NAME} startup success"
    else
        echo "${PROJECT_NAME} is running, pid=${pid} "
    fi
}
## 编写停止程序的方法
stop(){
    ## 调用 判断程序是否正在运行
    isExist
    ## 判断是否存在,返回值0不存在
    if [ $? -eq "0" ]; then
        echo "${PROJECT_NAME} is not running ......"
    else
        echo "${PROJECT_NAME} is running, pid=${pid}, prepare kill it "
        kill -9 ${pid}
        echo "${PROJECT_NAME} has been successfully killed ......"
    fi
}
## 编写重启方法
restart(){
    ## 先停止再启动
    stop
    start
}
 
 
## 程序最开始执行的
## 根据用户输入,判断执行方法
case "$1" in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "restart")
        restart
        ;;
    *)
        echo "please enter the correct commands: "
        echo "such as : sh startup.sh [ start | stop | restart ]"
        ;;
esac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:MEASURING DISENTANGLEMENT: A REVIEW OF METRICS

0 摘要 学习解缠和表示数据中的变化因素是人工智能中的一个重要问题。虽然已经取得了许多关于学习这些表示的进展,但如何量化解缠仍然不清楚。 虽然存在一些度量标准,但对它们的隐含假设、真正衡量的内容以及限制了解甚少。因此,当比较不同的…

一键开启GPT 平行时空模式

不知道大家日常使用GPT的时候,在一次会话中是如何完成同类任务的对话的? 简单点来说,假设你已经完成了角色设定,比如你设定GPT是一名文案编辑,那么接下来你会多次给它提交稿件让它进行编辑,那么在多次提交的时候&…

抽象工厂模式

一.定义 抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下: Provide an interface for creating families of related or dependent objects without specifyingtheir concrete classes.(为创建一组相关或相互依赖的对象提供一个接口&#…

算法刷题-双指针-二分法

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…

Web前端开发技术储久良第三版课后答案

P16-第1章 练习与实验答案 练习1 1.选择题 (1)B (2)B (3)B (4)D (5)A 2.填空题 (1)标记、文本 (2)Tim Berners-Lee(蒂姆伯纳斯李) (3)查看 (4)NotePad、EditPlus、TextPad、TopStyle、UltraEdit等 (5)超文本标记语言、统一资源定位符(器&am…

Axios和Spring MVC[前端和后端的请求和响应处理]

在前后端交互中,Axios和Spring MVC扮演着不同的角色,分别负责前端和后端的请求和响应处理。它们之间的作用如下: Axios(前端): 发送HTTP请求:前端使用Axios库发送HTTP请求到后端。可以使用Axi…

webpack生产模式配置

一、生产模式和开发模式介绍 生成模式(production mode)是指在开发完成后将代码部署到生产环境中运行的模式,通常需要进行代码压缩、优化、合并,以减少文件大小和请求次数,提高页面加载速度和运行效率。 开发模式&am…

02_LinuxLED驱动开发

目录 Linux下LED灯驱动原理 地址映射 ioremap函数 iounmap函数 I/O内存访问函数 LED灯驱动程序编写 编写测试APP 编译驱动程序 编译测试APP 运行测试 Linux下LED灯驱动原理 Linux下的任何外设驱动,最终都是要配置相应的硬件寄存器。所以LED灯驱动最终也是对I.MX6ULL…

LVS-DR群集部署

目录 一、LVS-DR数据包流向分析 二、 DR 模式的特点 总结 三、LVS-DR中的ARP问题 1.在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱 2.路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效 3.解…

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…

吴恩达ChatGPT课爆火

点上方计算机视觉联盟获取更多干货 没想到时至今日,ChatGPT竟还会犯低级错误? 吴恩达大神最新开课就指出来了: ChatGPT不会反转单词! 比如让它反转下lollipop这个词,输出是pilollol,完全混乱。 哦豁&#…

【调制BFSK】二进制频移键控FSK的数字调制(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

简要介绍 | 单目深度估计

注1:本文系“简要介绍”系列之一,仅从概念上对单目深度估计进行非常简要的介绍,不适合用于深入和详细的了解。 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅助 探索视觉世界的无限可能:单目深度估计介绍…

【Android开发基础】Canvas画笔(以刮刮乐为例)

文章目录 一、引言二、设计1、获取图片资源2、获取屏幕信息3、Canvas涂层4、随机内容5、屏幕监听 三、附件1、UI设计2、总代码(1)控件初始化(2)图层初始化 3、源代码 一、引言 (本篇博客只说明Canvas画笔的使用&#…

HTML5 介绍

目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> 文档类型声明 2.2 <html>标签 2.3 <meta>标签 设置字符编码 2.4 引用样式表 2.5 引用JavaScript文件 3. 完整页面示例 4. 资料网站 1. HTML5介绍 1.1 介绍 …

GPT-4的中国2023高考作文

我选取2023年上海的作文题&#xff08;我比较感兴趣&#xff09;&#xff0c;题目如下&#xff1a; 面对这个题目&#xff0c;不知道各位有什么想法么&#xff1f;如果你去考试&#xff0c;你会怎么写&#xff1f; 来&#xff0c;我们看看AI是怎么写的。 以下是GPT-4的作文&a…

Quarkus - 发布JSON Restful服务

目标 基于实现第一个Hello World发布一个JSON的Restful服务&#xff0c;该服务提供GET,POST,DELETE三个接口&#xff0c;分别是获取水果列表&#xff0c;添加水果&#xff0c;根据水果名字删除水果。 发布Rest服务 POM配置 添加jackson扩展的依赖 <dependency><gr…

OWASP 之跨站脚本xss基础技能

OWASP 之跨站脚本xss基础技能 一.XSS概述二.漏洞危害三.XSS漏洞绕过方法1.手工测试XSS步骤2.常见xss3.绕过方法 四.xss防御方法a.CSP内容安全策略b.HttpOnlyc.输入输出检查d.使用防御函数 五.pikachu靶场1.反射型XSS&#xff08;get&#xff09;2.反射型XSS&#xff08;post&am…

通过使用动态ip解决网络连接问题

互联网的使用已经成为我们生活中不可或缺的一种生活方式。但是&#xff0c;有时候我们会遇到网络连接问题&#xff0c;如IP地址冲突、网络瘫痪等等。这种情况往往会影响我们的工作&#xff0c;现在我们一般使用动态ip地址来解决这些问题。 一、什么是动态ip地址 动态IP地址是由…

浏览器插件 | Font Picker - 网页字体识别工具

目录 软件简介 Font Picker插件背景 Font Picker插件离线安装教程 Font Picker 小结 软件简介 Font Picker 插件是一款用于 Chrome 浏览器的字体选择器&#xff0c;这种网页字体识别工具看起来非常的干净&#xff0c;使用起来也十分的简单。本文提供Font Picker网页字体…