Jenkins集成JDK、git、gitee、maven逐步实现自动拉取,自动部署,自动启动

1. jenkins集成JDK

  1. 成功登录Jenkins后,选择Manage Jenkins,选择Tools

    在这里插入图片描述

  2. 集成JDK

    在这里插入图片描述

2. jenkins集成git

因为Jenkins自动从git远程仓库拉取代码

首先要在Jenkins所在的linux服务器上安装git

yum install -y git

然后,实行集成JDK的第一步

  1. 配置git

    在这里插入图片描述

3. Jenkins创建项目,拉取git仓库中的代码

  1. 选择新建Item,创建一个Jenkins项目

    在这里插入图片描述

  2. 添加git远程仓库地址

    在这里插入图片描述

现在jenkins无法自动拉取代码【当仓库中的代码发生改变时无法自动拉取】

  1. 手动拉取——点击Build Now,立马构建,若构建成功,表示之前的集成和配置成功

    在这里插入图片描述

4. Jenkins集成maven

由于Jenkins本身不能对代码进行打包。所以我们需要集成maven,而且我们的项目100%都是maven构建的项目

  • linux安装maven
  1. 将下载好的maven文件拉取到Jenkins所在的Linux服务器上

  2. 解压

    tar -zxvf xxx.tar.gz
    

    在这里插入图片描述

  3. 配置环境变量

    vi /etc/profile
    
    export MAVEN_HOME=安装路径
    export PATH=$MAVEN_HOME/bin:$PATH
    

    退出并保存

  4. 重启

    source /etc/profile
    
  5. 查看版本

    mvn -version
    

在这里插入图片描述

显示版本号,即为安装成功

  1. 修改maven配置文件【本地仓库和阿里云远程仓库地址】

    在这里插入图片描述

    可将window里的配置文件覆盖到linux中

  • Jenkins集成maven
  1. 安装maven项目

    在这里插入图片描述

  2. jenkins集成maven

    在这里插入图片描述

5.实现自动拉取

因为gitee仓库的代码——默认gitee不允许内网拉取

所以需要借助内网穿透软件以实现内网拉取

1. 准备内网穿透的软件——NATAPP

可直接参考官方文档:

https://natapp.cn/article/natapp_newbie

  1. 打开网址,进行免费注册

    https://natapp.cn/article/natapp_newbie

  2. 注册成功后,会借助支付宝完成个人信息认证

    • 成功后的页面

      在这里插入图片描述

  3. 功后,点击购买隧道,选择免费购买,点击选择免费购买即可

    在这里插入图片描述

  4. 点击客户端下载,根据具体需要下载对应的版本

    在这里插入图片描述

  5. 将其解压在一个文件夹后,创建一个后缀为.bat的脚本,用于开启natapp。脚本内容为:start natapp -authtoken=xxxx,xxxx内容为自己的authtoken

    在这里插入图片描述

    1. 查看自己的authtoken:点击我的隧道即可看见

    在这里插入图片描述

    1. 点击在上示图片中的配置,配置自己的jenkins的服务器ip和端口号8777,以实现jenkins的自动拉取

      在这里插入图片描述

    2. 最后,双击步骤5中自己创建的.bat文件,生成外网域名

      在这里插入图片描述

以上完成了关于NATAPP的相关操作

2. 关于jenkins上的操作

  1. 创建一个新建item,选择maven

    在这里插入图片描述

  2. 点开该项目配置git

    在这里插入图片描述

  3. 配置构建触发器,做以下操作,点击保存即可【在此之前需要先下载安装gitee插件】

在这里插入图片描述

3. 修改gitee仓库的配置

  1. 选中jenkins配置的那个远程仓库,点击配置,选中WebHooks,点击添加

    在这里插入图片描述

  2. 配置URL和WebHook密码

    在这里插入图片描述

测试

完成上述操作后,即可实现远程仓库改变,jenkins自动拉取

6.实现自动化部署

通过shell脚本实现自动化部署

jenkins 软件需要大量集成第三方很多软件【maven、git、jdk】,如果我们的项目也部署到该服务器下,势必导致项目性能弱

把jenkins所在的服务器下打包好的项目远程复制到其他服务器上。在其他服务器进行项目的启动和关闭

  • 远程复制命令
scp xxx.jar root@远程ip:/远程路径

此时需要输入密码,所以要进行免密复制操作

6.1 免密复制操作

配置ssh免密登录

免密登录主要是方便Jenkins服务器的root用户——向——>应用服务器的root用户上 jar包拷贝。部署本就是jar包拷贝的过程

  • Jenkins机器上使用root用户 生成密钥【注意,此处是root用户】
ssh-keygen -t rsa
然后进行3次回车

运行后会在当前用户的根目录生成一个 .ssh文件夹

ssh文件夹中的文件描述

  • id_rsa :生成的私钥文件
  • id_rsa.pub:生成的公钥文件
  • 接下来,需要将公钥导入到认证文件中【Jenkins】
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

如果希望ssh公钥生效需要满足至少下面两个条件:

  • .ssh目录的权限必须是700
  • .ssh/authorized_keys文件权限必须是600
  • 给对应文件授权【Jenkins】
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • authorized_keys文件拷贝到另一台应用服务器的root用户 .ssh目录下

    • 首先在应用服务器上用root用户创建/root/.ssh文件夹

      mkdir -p /root/.ssh
      
    • Jenkins服务器上将pub公钥文件拷贝到应用服务器的 .ssh目录下

scp -p ~/.ssh/id_rsa.pub root@应用服务器的IP地址:/root/.ssh/authorized_keys
  • Jenkins服务器上进行免密连接测试
ssh 应用服务器ip地址

总结

1. 在jenkin所在的服务器使用ssh-keygen -t rsa
2. 把公钥加载到认证文件中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 修改.ssh [700]和authorized_keys [600]的权限.
4. 把jenkins服务器上公钥远程复制到免密的服务器上。mkdir -p /root/.sshscp -p ~/.ssh/id_rsa.pub root@应用服务器的IP地址:/root/.ssh/authorized_keys

6.2 用于远程复制的脚本

  1. 点开Jenkins项目,点击配置
  2. 选中下图位置,点击Execute shell,将脚本粘贴到此处

在这里插入图片描述

脚本

#!/bin/bashecho "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"echo "待部署的应用服务器,可多台"
# 部署项目的ip 
server_ips="172.16.7.112"
for server_ip in ${server_ips[@]}
doecho "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];thenmv $DIR/${projectName}/${projectName}.jar  $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar 
fi
EOFecho "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jarecho "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jarEOFdoneecho "success"

把Jenkins打包的jar远程copy到指定的服务器下

6.3 用于启动项目的脚本

  1. 根据远程复制的脚本,可知项目打包后的路径/data/app

  2. 该目录下有my-boot目录

  3. 在该目录下创建start.sh文件

    mkdir start.sh
    
  4. 将下列脚本复制粘贴即可

#!/bin/bash
APP_ID="my-boot"
APP_DIR="/data/app"nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];thensleep 3tail -n 10 release_out.logsleep 5tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];thenecho "Application started ok"exit 0
elseecho "Application started error"exit 1
fi

6.4 用于关闭的脚本

  1. 根据远程复制的脚本,可知项目打包后的路径/data/app

  2. 该目录下有my-boot目录

  3. 在该目录下创建stop.sh文件

    mkdir stop.sh
    
  4. 将下列脚本复制粘贴即可

#!/bin/bashAPP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

6.5 在Jenkins配置中引入关闭和启动脚本

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh

先关后开

在这里插入图片描述

6.6 测试

测试时,需要在应用服务器上启动该项目,同样在my-boot目录下

java -jar my-boot.bar

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#:枚举及位标志周边知识详解(小白入门)

文章目录 枚举为什么要有枚举?枚举的性质设置默认类型和显式设置成员的值 位标志(重要)位标记是什么及作用位标志周边知识HasFlag判断是否有该功能枚举前面加Flags的好处 关于枚举的更多知识using static简化代码获取枚举成员的字面量 枚举 为什么要有枚举? 为了增加代码的…

FlowUs息流作为一款技术驱动的笔记和知识管理平台,其核心功能和技术优势为新媒体行业带来了革命性的工作效率提升

FlowUs息流作为一款技术驱动的笔记和知识管理平台&#xff0c;其核心功能和技术优势为新媒体行业带来了革命性的工作效率提升。以下是对其技术特色的深入解析&#xff1a; 本地化技术优化&#xff1a;FlowUs息流通过深入研究中文用户的操作习惯&#xff0c;实现了界面的本地化设…

【WRF安装第二期(Ubuntu)】搭建WRF编译所需系统-系统环境检验

WRF安装第二期&#xff1a;搭建WRF编译所需系统-系统环境检验 0 升级和安装基础环境1 系统环境检验&#xff08;System Environment Tests&#xff09;1.1 检验和安装基础包1.1.1 安装指令1.1.2 检验指令 1.2 WRF安装的目录结构1.2.1 WRF系统环境测试 1.3 测试编译器&#xff0…

Python文件加密库之cryptography使用详解

概要 在现代信息社会中,数据的安全性变得越来越重要。为了保护敏感信息,文件加密技术被广泛应用。Python的cryptography库提供了强大的加密功能,可以轻松实现文件加密和解密。本文将详细介绍如何使用cryptography库进行文件加密,包含具体的示例代码。 cryptography库简介 …

模型剪枝综述

目录 1 深度神经网络的稀疏性&#xff1a; 2 剪枝算法分类&#xff1a; 3 具体的剪枝方法包括&#xff1a; 4 剪枝算法流程&#xff1a; 5 几种常见的剪枝算法&#xff1a; 6 结构化剪枝和非结构化剪枝各有其优缺点&#xff1a; 7 剪枝算法对模型精度的影响 8 影响剪枝…

《集成电路应用》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《集成电路应用》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《集成电路应用》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国电子信息产业集团有限公司 主…

【错误总结】Ubuntu系统中执行 sudo apt-get update报错

Ubuntu系统中执行 sudo apt-get update报错 命令行描述升级sudo报错并解决错误描述错误解决原因1&#xff1a;系统网络问题 原因2&#xff1a;设置清华源后/etc/apt/sources.list不匹配原因3&#xff1a;ubuntu自带的源/etc/apt/sources.list有问题 apt-get update成功log参考 …

电脑的录屏功能在哪?精准操作,电脑录屏方法大揭秘

电脑的录屏功能已成为数字时代创作和分享的重要工具。然而&#xff0c;对于许多人来说&#xff0c;要找到电脑上的录屏功能可能并不容易。究竟它们隐藏在哪里&#xff1f;如何启用这个功能呢&#xff1f;这些问题可能会让人感到困惑。 本文将带您一起探索电脑上的录屏功能所在…

ip地址会因为位置不同而改变吗

在数字化时代&#xff0c;IP地址作为互联网用户的“数字指纹”&#xff0c;扮演着至关重要的角色。它不仅是设备接入网络的唯一标识&#xff0c;还常常与用户的地理位置紧密相连。然而&#xff0c;随着移动互联网的普及和人们日常活动的多样化&#xff0c;一个有趣的现象逐渐显…

【漏洞复现】泛微E-Cology9 WorkPlanService 前台SQL注入漏洞(XVE-2024-18112)

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台&#xff0c;支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 该漏洞是由于泛微e-cology未对用户的输入进行有效的过滤&#xff0c;直接将其拼接进了SQL查询语句中&#xff0c;导致系统出…

Kafka的入门及简单使用

文章目录 前言一、Kafka 的基本架构&#xff1f;1. Producer&#xff08;生产者&#xff09;2. Broker&#xff08;代理/服务器&#xff09;3. Consumer&#xff08;消费者&#xff09;4. Consumer Group&#xff08;消费者组&#xff09;5. Topic&#xff08;主题&#xff09;…

openJdk21镜像打包制作

文章目录 一.目的&#xff1a;二.dockerfile 代码三.调试四.效果图五.声明 一.目的&#xff1a; 制作基于openjdk21的基础镜像&#xff0c;方便后续使用 内容&#xff1a; 1.使用的是Debian 11 slim 作为基础镜像&#xff08;在此感谢no name大佬提醒我alpine做为基础镜像不稳…

TypeScript 与 JavaScript 的对比区别

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

保研408真题练习:2009年全国硕士研究生入学统一考试(单选篇1)

&#x1f9ca;&#x1f9ca;&#x1f9ca;单项选择题&#xff08;共40道&#xff09; &#x1f9ca;数据结构&#xff08;10道&#xff09; &#x1f965;1.打印机的缓冲区逻辑结构 栈&#xff1a;先进后出&#xff1b; 队列&#xff1a;先进先出。 缓冲区的作用是解决主机…

EasyExcel 初使用—— Java 实现多种写入 Excel 功能

前言 大家好&#xff0c;我是雪荷。之前有一篇博客&#xff08;EasyExcel 初使用—— Java 实现读取 Excel 功能_java easyexcel.read-CSDN博客&#xff09;介绍了 Java 如何读取 Excel 表格&#xff0c;那么此篇博客就和大家介绍下 Java 如何利用 EasyExcel 写入 Excel。 Ea…

基于PHP+MySQL组合开发的微信活动投票小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代&#xff0c;微信作为社交媒体的巨头&#xff0c;为企业和个人提供了丰富的互动营销平台。其中&#xff0c;投票活动作为一种有效的用户参与和互动方式&#xff0c;被广泛应用于各种场景。为了满足这一需求&#xff0c;我们推出了一款基于PHPMySQL组…

【原创教程】电气电工主要做什么?(入门篇)

本系列文章主要介绍工业电气电工所涉及到的操作技能&#xff0c;器件原理&#xff0c;图纸识别&#xff0c;以及电气电工质量管理。掌握本系列的技能&#xff0c;将能够胜任电气自动化方面的电气电工工作。 电气电工&#xff0c;它是一个细分领域&#xff0c;是目前许多公司迫…

【Python系列】Python 中`eval()`函数的正确使用及其风险分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

2024服贸会媒体邀约资源表-附媒体名单

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 2024年服贸会作为全球服务贸易领域的重要盛会&#xff0c;将再次聚焦全球目光。计划于2024年举行的服贸会将继续发挥其作为国际服务贸易桥梁的作用&#xff0c;不仅是展示中国服务贸易成…

激光传感器 - 从零开始认识各种传感器【第二十一期】

激光传感器|从零开始认识各种传感器 1、什么是激光传感器 激光传感器是一种利用激光技术来进行测量和检测的设备。这类传感器使用激光光束来探测目标物体的位置、距离、速度或其他特性。激光传感器具有精度高、测量距离长&#xff0c;抗干扰能力强的特点。 2、激光传感器是如何…