在云服务器上自动化部署项目,jenkins和gitee
▮全文概述
在编写项目时,很头大的事情就是需要自己手动的上传jar包到服务器上启动。如果出现一点bug,就要重头上传和启动。这是一件很烦的事情,所以,可以使用jenkins和gitee实现项目的自动部署
▮全流程
- 在本地提交代码到gitee
- gitee发送请求通知jenkins
- jenkins接到通知后自动执行任务
- 构建maven项目,打jar包
- 构建后执行启动jar包的脚本
最终,我在本地提交代码,服务器也可以跟着改变,不再需要我手动的去上传jar包到服务器启动。全操作很简洁,不使用Docker,也不需要配置
▮建立gitee仓库
- 使用github,gitlab都可以
- 使用gitee比较方便,也不需要我去搭建gitlab
▮下载jenkins
▪上传jenkins的war包到服务器
通过百度网盘分享的文件:jenkins.war
链接:https://pan.baidu.com/s/1RjwJ0Yy7tnyd9WjzukaSvw?pwd=hldy提取码:hldy
▪上传Maven包到服务器
通过百度网盘分享的文件:apache-maven-3.6.3.zip
链接:https://pan.baidu.com/s/1fMHnDfXxJ5I9bF88u3h6dw?pwd=hldy提取码:hldy
网盘里Maven的仓库源是阿里云的。如果你的Maven是从别的渠道下载,记得修改“settings.xml” 文件里的仓库源
▪服务器下载git
yum install git
▪服务器下载Java
yum install java-11-openjdk-devel
▮启动jenkins
▪启动命令(端口自定义,安全组记得开放)
nohup java -jar jenkins.war --httpPort=58082 &
▪访问Web界面
http://服务器IP:58082/ 第一次加载需要等待几分钟
▪从jenkins日志获取管理员密码
vim nohup.out打开日志文件读取token,:q退出vim
▪安装推荐插件
▪创建一个用户
▪实例配置
▮添加插件
▪Maven插件
向下滚动 ,看到Maven安装完成就行
▪Gitee插件
▮系统配置
▪配置Maven
▪配置Gitee
▮新建任务
▪丢弃旧的构建
▪配置源码-Git
从仓库获取连接
▪配置gitee的构建触发器(gitee通知jenkins执行此任务)
什么都不用管,只需要生成下面这个Gitee WebHook就行
▪设置gitee仓库的WebHook
在这个界面是可以测试钩子是否正常的,但不知为何,在gitee上测试只会报错,但你提交代码的时候又可以正常的触发钩子。所以这里我先不管,后面再去测试钩子是否正常
▪指定pom文件
▪执行shell命令,启动jar包
BUILD_ID=DONTKILLME
#获取你想运行jar包的进程号
pid=`ps -ef | grep mindmap.jar | grep -v grep | awk '{print $2}'`
#如果存在则把该进程杀掉
if [ -n "$pid" ]
thenecho "kill -9 的pid:" $pidkill -9 $pid
fi
echo "复制jar包"
#把jenkins打的jar包复制到自己指定的目录下
cp /root/.jenkins/workspace/mindMap/5.mindmap-service/target/mindmap.jar /root/cloud
echo "启动jar包"
#最后启动jar包并把日志输出到指定的文件中以便查看
nohup java -jar /root/cloud/mindmap.jar &
在文本框里输入要执行的命令
"mindmap.jar",是jar包名,这个记得换成你自己的包名
"cp /root/.jenkins/workspace/mindMap/5.mindmap-service/target/mindmap.jar /root/cloud"
- "/root/.jenkins/workspace"是jenkins的工作目录,在控制台是看不到的,但是你可以通过cd指令进入。
- "/root/cloud"是我自定义的一个目录,这个指令就是把打出的jar包转移到这个目录下。这个你可以自定义
至此,整个任务配置完成,如果你需要打多个jar包启动,那你可以把上面这个命令行复制几份去启动就行。如果你向使用DockerFile
▮测试
▪在本地git提交代码到仓库
▪jenkins自动部署
点击可以进入,实时查看执行流程
第一次打包需要加载很多东西,所以需要比较长的时间
打包成功
执行指令,后台启动jar包
可以看到,需要的服务已经全部启动。这就是全自动部署
相关文章:
在云服务器上自动化部署项目,jenkins和gitee
▮全文概述 在编写项目时,很头大的事情就是需要自己手动的上传jar包到服务器上启动。如果出现一点bug,就要重头上传和启动。这是一件很烦的事情,所以,可以使用jenkins和gitee实现项目的自动部署 ▮全流程 在本地提交代码到gitee …...
python 参数输入
在 Python 中,参数输入通常有多种方式,这取决于你要从何处获取参数。以下是几种常见的方法: 1. 命令行参数 使用 sys.argv 获取命令行参数,或者使用 argparse 模块进行更复杂的参数解析。 示例 1: 使用 sys.argv import sys# …...
Spring面试篇章——Spring基本概述
Spring 的基本概述 Spring学习的核心内容—一图胜千言 IOC:控制反转,可以管理 Java 对象AOP:切面编程JDBCTemplate:是Spring提供一套访问数据库的技术,应用性强,相对好理解声明式事务:基于IOC …...
股票预测模型中注意力多层Attention RNN LSTM 的应用
全文链接:https://tecdat.cn/?p37152 原文出处:拓端数据部落公众号 Attention 机制是一种在神经网络处理序列数据时极为关键的技术,它赋予了模型“聚焦”能力,能够自动评估输入序列中各部分的重要性。通过为序列中的每个元素分…...
C语言 | Leetcode C语言题解之第313题超级丑数
题目: 题解: int nthSuperUglyNumber(int n, int* primes, int primesSize) {long dp[n 1];int pointers[primesSize];for (int i 0; i < primesSize; i) {pointers[i] 0;}long nums[primesSize];for (int i 0; i < primesSize; i) {nums[i] …...
PHP健身微信小程序系统源码
🏋️♀️健身新潮流!解锁“健身微信小程序”的全方位塑形秘籍 📱开篇:掌中健身房,随时随地动起来 你还在为找不到合适的健身场地或教练而烦恼吗?是时候告别这些束缚,拥抱“健身微信小程序”…...
树组件 el-tree 数据回显
树组件 el-tree 数据回显 树型结构的数据回显问题: 这里我只放了核心代码,主要是如何获取选中的树节点的id集合和如何根据树节点的id集合回显数据 大家根据需要自行更改! <el-tree ref"authorityRef" node-key"id" …...
54、PHP 实现希尔排序
题目: PHP 实现希尔排序 描述: 思路分析:希尔排序是基于插入排序的,区别在于插入排序是相邻的一个个比较(类似于希尔中h1的情形),而希尔排序是距离h的比较和替换。 希尔排序中一个常数因子n&a…...
linux 虚拟机解压arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2并arm-linux-gcc
解压到当前目录:tar -jxvf arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2解压到指定目录:tar -jxvf arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /xx/xxx/xxx-C大写,后面接要解压的路径解压后得到一个 opt文件夹 在/usr/local/bin 下创建新的…...
泛化的最近点迭代法(Generalized-ICP)
Generalized-ICP算法是由斯坦福大学的Aleksandr V. Segal、Dirk Haehnel和Sebastian Thrun提出的,于2009年在Robotics science and system会议上发表。 GICP是一种ICP算法的变体,其原理与ICP算法相同,之所以称为泛化的ICP算法是因为大多数ICP…...
Java | Leetcode Java题解之第313题超级丑数
题目: 题解: class Solution {public int nthSuperUglyNumber(int n, int[] primes) {int[] dp new int[n 1];int m primes.length;int[] pointers new int[m];int[] nums new int[m];Arrays.fill(nums, 1);for (int i 1; i < n; i) {int minN…...
单细胞数据整合-去除批次效应harmony和CCA (学习)
目录 单细胞批次效应学习 定义 理解 常用的去批次方法-基于Seurat 1) Seurat-integration(CCA) 2) Seurat-harmony 去批次代码 ①Seurat-integration(CCA) ②Seurat-harmony 单细胞批次效应学习 …...
MuRF代码阅读
对图像Size的处理, 以适应Transformer 在MVSPlat 当中使用 Center_Crop 裁剪图像,适用于 Transformer 的32 倍数, 其中 焦距 f 不变化,只改变 cx,cy.MuRF 直接对图像进行 插值,合成理想的 size. 根据 ori_size 和 inference_size…...
pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“
参考博客: 1)pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2).ui转化为.py后,点击运行,报错…...
c语言指针中“数组名的理解”以及“一维数组传参”的本质
数组名的理解 数组名就是数组首元素的地址。 例如:输入一个数组的所有元素,再打印出来。 另一种写法 以上可以看出:*arri) arr[i] 也即是:*(iarr)i[arr] 本质上无区别 1:数组就是数组,是一块…...
计算机毕业设计Python+Flask微博舆情分析 微博情感分析 微博爬虫 微博大数据 舆情监控系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
基于Python/flask的微博舆情数据分析可视化系统 python爬虫数据分析可视化项目 编程语言:python 涉及技术:flask mysql echarts SnowNlP情感分析 文本分析 系统设计的功能: ①用户注册登录 ②微博数据描述性统计、热词统计、舆情统计 ③微博数…...
KubeBlocks v0.9 解读|最高可管理 10K 实例的 InstanceSet 是什么?
实例(Instance)是 KubeBlocks 中的基本单元,它由一个 Pod 和若干其它辅助对象组成。为了容易理解,你可以先把它简化为一个 Pod,下文中将统一使用实例这个名字。 InstanceSet 是一个通用 Workload API,负责…...
ZW3D二次开发_菜单_禁用/启用表单按钮
1.如图示,ZW3D可以禁用表单按钮(按钮显示灰色) 2.禁用系统默认表单按钮,可以在菜单空白处右击,点击自定义,找到相关按钮的名称,如下图。 然后使用代码: char name[] "!FtAllBo…...
windows子系统wsl完成本地化设置locale,LC_ALL
在 Windows 的子系统 Linux(WSL)环境中,解决本地化设置问题可以采取以下步骤: 1. **检查本地化设置**: 打开你的 WSL 终端(比如 Ubuntu、Debian 等),运行以下命令来查看当前的本…...
MYSQL 根据条件order by 动态排序
文章目录 案例1:根据动态值的不同,决定某个字段是升序还是降序案例2:根据动态值的不同,决定使用哪个字段排序 最近在做大数据报表时,遇到这样一种情况,若是A类型,则部门按照正序排序;…...
DirectX修复工具下载安装指南:电脑dll修复拿下!6种dll缺失修复方法!
在日常使用电脑的过程中,不少用户可能会遇到“DLL文件缺失”的错误提示,这类问题往往导致程序无法正常运行或系统出现不稳定现象。幸运的是,DirectX修复工具作为一款功能强大的系统维护软件,能够有效解决大多数DLL文件缺失问题&am…...
vue3(1)虚拟数字键盘的封装,(2)以及子组件改变父组件变量的值进而使子组件实时响应值的变化,(3)子组件调用父组件中的方法(带参)
父组件 <template><div><!-- 数字键盘 --><NumericKeyboardv-model:myDialogFormVisible"myDialogFormVisible" :myValueRange"myValueRange"submit"numericKeyboardSubmitData"/></div> </template><s…...
反序列化靶机serial
1.创建虚拟机 2.渗透测试过程 探测主机存活(目标主机IP地址) 使用nmap探测主机存活或者使用Kali里的netdicover进行探测 -PS/-PA/-PU/-PY:这些参数即可以探测主机存活,也可以同时进行端口扫描。(例如:-PS࿰…...
扎克伯格说Meta训练Llama 4所需的计算能力是Llama 3的10倍
Meta 公司开发了最大的基础开源大型语言模型之一 Llama,该公司认为未来将需要更强的计算能力来训练模型。马克-扎克伯格(Mark Zuckerberg)在本周二的 Meta 第二季度财报电话会议上表示,为了训练 Llama 4,公司需要比训练…...
CTFHUB-文件上传-双写绕过
开启题目 1.php内容: <?php eval($_POST[cmd]);?> 上传一句话木马 1.php,抓包,双写 php 然后放包,上传成功 蚁剑连接 在“/var/www/html/flag_484225427.php”找到了 flag...
RabbitMQ docker部署,并启用MQTT协议
在Docker中部署RabbitMQ容器并启用MQTT插件的步骤如下: 一、准备工作 安装Docker: 确保系统上已安装Docker。Docker是一个开源的容器化平台,允许以容器的方式运行应用程序。可以在Docker官方网站上找到适合操作系统的安装包,并…...
Python面试宝典第25题:括号生成
题目 数字n代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且有效的括号组合。 备注:1 < n < 8。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()"…...
计算机毕业设计选题推荐-社区停车信息管理系统-Java/Python项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
Python面试整理-自动化运维
在Python中,自动化运维是一个重要的应用领域。Python凭借其简单易用的语法和强大的库支持,成为了运维工程师的首选工具。以下是一些常见的自动化运维任务以及如何使用Python来实现这些任务: 1. 文件和目录操作 Python的os和shutil模块提供了丰富的文件和目录操作功能。 impo…...
自动化测试与手动测试的区别!
自动化测试与手动测试之间存在显著的区别,这些区别主要体现在以下几个方面: 测试目的: 自动化测试的目的在于“验证”系统没有bug,特别是在系统处于稳定状态时,用于执行重复性的测试任务。 手工测试的目的则在于通过…...
嘉兴网站建设999 999/下载百度到桌面上
Docker 完全指南 原作者地址: https://wdxtub.com/2017/05/01/docker-guide/ 发表于 2017-05-01 | 更新于 2017-08-03 | 分类于 Technique | | 1669 3,950 | 15Docker 作为新瓶装旧酒的一门技术,用简单便捷的操作极大改变了软件开发的流程与生态环境࿰…...
晋江做网站的公司/大数据免费查询平台
一、效果图展示 二、FileHeader 插件安装 FileHeader 插件的安装方法和其它插件相同。下面简单述说一下: 先安装一个 Package Control 插件。相信大家使用 Sublime 的话都有安装这个了Preference -> Package Control -> Install Package -> FileHeader。然…...
开网站做备案需要什么资料/企业培训权威机构
文章目录Rust的智能指针--RefCell<T>注意:Rust的智能指针–RefCell 现在我定义一个接口Messager,用来send消息。 pub trait Messager {fn send(&self, msg: &str); }然后一个LimitTracker类型根据指定的配额来send消息* pub struct Limi…...
免费素材网站哪个最好/百度引擎的搜索方式是什么
写查询语句的时候有时候会突然来这么一句提示,仔细看sql还没什么错误。 报错代码 SQL> select l.awuname,g.aultext,d.aulword2 from aw_usercotrl l,aw_userlog g,aw_userlog_lword d3 where l.awuid g.awuid and g.aulid d.fkaulid4 ;select from whereO…...
手机网站制作相关文章/郴州网站seo外包
原因 在插入mongodb时,插入的是同一个字典对象字典对象字典对象,所以 _id重复,报错! 解决 只需每次创建文档字典时,都新建一个字典对象即可...
两个网站链接如何做/国内最好的危机公关公司
1、什么是JavaScript 1.1、概述 JavaScript是一门世界上最流行的脚本语言。 Java与JavaScript关系:可以说除了名字,毫无关系 一个合格的后端人员,必须要精通JavaScript 1.2、 历史 https://blog.csdn.net/kese7952/article/details/793…...