Jenkins环境部署与任务构建
一、CI/CD
1、CI/CD 概念:
CI/CD 是一种软件开发和交付方法,旨在加速应用程序的开发、测试和部署过程,以提高软件交付的质量和效率。
(1) 持续集成 (CI Continuous Integration):
持续集成是开发团队频繁集成其代码更改的过程。开发者将其代码合并到共享代码库(如Git仓库)后,CI工具(例如Jenkins、Travis CI、CircleCI等)将自动构建、测试和部署应用程序。(代码合并、构建、部署、测试在一起不断执行,并对结构反馈)
(2) 持续交付 (CD Continuous Deployment):
持续交付是一种将应用程序的构建版本自动部署到测试环境的实践。在持续交付流程中,每次通过CI测试的代码变更都可以自动部署到一个测试环境,使团队能够快速验证新功能、修复和改进。(把代码部署到测试环境)
(3) 持续部署 (CD Continuous Delivery):
将通过 CI 生成的新代码或软件的变更自动部署到生产环境,不需要人工干预。
2、版本交付策略:
(1) 平滑发布:
在发布过程中系统不会因为更新代码而停止服务,不会造成用户短暂的无法访问;
(2) 灰度发布:
灰度发布是一种的策略,先让一小部分用户使用新版本,然后收集用户反馈,再将新版本引入生产环境;
(3) A/B 发布:
A/B 发布是一种将两个或多个不同版本的应用程序同时发布到不同的用户群体中的策略。
二、Jenkins
1、jenkins 概述:
jenkins 是一个开源的自动化服务器和持续集成/持续交付(CI/CD)工具,用于自动化和管理软件项目的构建、测试和部署过程;
jenkins 原名 Hudson,后来成为开源项目;
jenkins 是基于 Java 编写的,它的核心是一个可扩展的插件系统;
jenkins 可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。
2、jenkins 作用:
① 实现持续集成(CI):jenkins 的主要目标是支持持续集成实践,确保代码更改频繁地集成到共享代码库,自动构建和测试。
② 自动化构建和部署:编译、打包、测试,以及自动化部署到各个环境。
③ 提供灵活性:jenkins 的架构和插件系统为用户提供了广泛的自定义和扩展选项,以适应不同项目和工作流的需求。
3、jenkins 环境部署(192.168.198.131,内存4G):
(1) 部署 git:
在 jenkins 中,使用 git 用于管理项目的源代码。
① 安装依赖包:
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
② 安装 git:
make prefix=/usr/local/git all :编译git源码包
make prefix=/usr/local/git install :指定安装目录
③ 修改环境变量:
vim /etc/bashrc
PATH=$PATH:$HOME/bin:/usr/local/git/bin
source /etc/bashrc
测试是否安装成功:
(2) 部署 jdk(jdk11):
在 jenkins 中,jdk 用于构建和运行 Java 项目。
jdk 官网:Java Downloads | Oracle
① 解压安装:
tar xvzf jdk-11.0.21_linux-x64_bin.tar.gz -C /usr/local/
② 修改环境变量:
vim /etc/bashrc
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
(3) 部署 Maven:
在 jenkins 中,Maven 可以自动化项目的构建过程,将源代码编译、测试、打包、发布等步骤整合到一起。
① 下载解压:
② 修改环境变量:
vim /etc/bashrc
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/jdk
export PATH
(4) 部署 Tomcat:
在 jenkins 部署中,Tomcat 用于部署和运行 Web 应用程序。
① 下载解压:
② 修改环境变量:
vim /erc/profile
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
source /etc/profile
③ 启动并测试 tomcat:
开启 tomcat:/usr/local/tomcat/bin/startup.sh
关闭 tomcat:/usr/local/tomcat/bin/shutdown.sh
(5) 部署 jenkins:
① 在官网选择版本 2.426:
jenkins.war
② 将 jenkins.war 拷到 tomcat 的工作目录下:
③ 启动 tomcat:
启动 tomcat 后会自动解压 webapps 下的 war 包
/usr/local/tomcat/bin/startup.sh
④ 登录 jenkins:
管理员默认的初始化密码在 /root/.jenkins/secrets/initialAdminPassword 下
选择安装社区推荐的插件:
创建用户:
访问地址:http://192.168.198.131:8080/jenkins/
4、jenkins 插件管理:
(1) 安装插件:
在 “系统管理” 中选择 “插件管理”,点击 Available plugins,搜索插件名
① 安装 Deploy to container:
作用:将 Web 应用程序部署到 Tomcat 容器的开发工具插件。
② 安装 Maven Integration:
作用:jenkins 利用 maven 进行编译,测试,打包。
③ 安装 git 相关插件:
GitHub Authentication
GitHub Branch Source
GitHub Organization Folder(jenkins已配置)
④ 安装 Publish Over SSH:
作用:在构建过程中通过 SSH 协议上传或下载文件
(2) jenkins 系统设置:
配置 jdk,git,maven 的根目录,在 “系统管理” 中找到 “全局配置工具” 进行修改
① 配置 jdk:
② 配置 git:
③ 配置 maven:
● 配置 maven 镜像:
在 maven 服务器中配置 settings.xml,找到 <mirrors> 配置阿里镜像
/usr/local/maven/conf/settings.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
(3) SSH 设置:
jenkins服务器(192.168.198.131) 与远程 tomcat 服务器(192.168.198.130)通过 ssh 进行连接
① jenkins 准备密钥:
ssh-keygen
ssh-copy-id -i 192.168.198.130
② 在 jenkins 上配置 ssh 信息:
cat ~/.ssh/id_rsa :查看 jenkins服务器(131)的密钥
在 “系统管理” 中找到 “系统配置”,在 “Publish over SSH” 下进行配置
5、jenkins 任务:
jenkins 提供管理和监控界面,用于设置和配置构建任务,以及查看构建日志和结果;
maven 的作用是执行构建任务,根据项目的 POM(Project Object Model)文件定义,下载所需的依赖,编译源代码,运行单元测试,打包应用程序等;
GitHub 是代码托管平台,用于存储和管理项目的源代码。
(1) 创建任务:
点击 “新建任务”,输入任务名,选择构建 maven 项目
(2) 设置 maven:
① 描述:
选择“丢弃旧的构建”:每一次构建都会下载数据包,勾选 "丢弃旧的构建" 可以释放磁盘空间,删除旧的构建数据,从而防止磁盘空间不足。
② 选择版本控制器和仓库地址(公有仓库):
https://github.com/bingyue/easy-springmvc-maven
从这个仓库中拉取代码
③ 设置构建:
clean package -Dmaven.test.skip=true
这是一个 Maven 命令,用于清理项目残留的旧文件、执行打包过程,并快速构建项目,跳过运行测试阶段。
④ 构建后操作:
在 “构建后操作步骤” 中选择:send build artifacts over ssh(通过SSH发送构建工件)
● Source files:源文件
在任务构建后,jenkins 服务器上会创建一个 war 包(路径:/root/.jenkins/jobs/job1/builds/target/*.war),Source files 的作用是指明需要传递给远程 tomcat 服务器(tomcat1)的 war 包的位置;
● Remove prefix:删除路径前缀
Remove prefix 与 Source files 配合,只拷贝 war 包,不拷贝整个 target 文件夹下的内容;
● Remote directory:远程服务器文件夹的位置
远程 tomcat 服务器上用来存放源码的位置,需要自行创建;
● Exec command:提前写好脚本,在源代码传递过来后,执行该脚本,若成功执行脚本说明源代码拷贝成功
注:此实验旨在进行任务的创建过程,并未对远程 tomcat 服务器真正进行部署
(3) 构建任务:
在远程 tomcat 服务器上查看脚本是否执行:
war 包已成功拷贝到远程服务器
相关文章:

Jenkins环境部署与任务构建
一、CI/CD 1、CI/CD 概念: CI/CD 是一种软件开发和交付方法,旨在加速应用程序的开发、测试和部署过程,以提高软件交付的质量和效率。 (1) 持续集成 (CI Continuous Integration): 持续集成是开发团队频繁集成其代码更改的过程。开发者将其…...

ES6 Class和Class继承
1.class的基本语法 class可以理解为是一个语法糖,将js只能通过构造函数创建实例的方法进行了补充 构造函数: function Person ({ name, age18 }) {this.name namethis.age age } new Person({name: 张三}) Class类: class Person {con…...
C++11 packaged_task
std::packaged_task 把一个方法打包成一个task扔到线程中执行,然后通过packaged_task中的furture等待执行结果。 void test_promise() {std::packaged_task <int()> task([]()->int {std::cout << "packaged_task begin \n" << std…...
delete、drop、truncate三兄弟
比较方面/具体命令deletetruncatedrop删除范围逐行删除(记录行)逐页删除(数据页)整张表(数据表结构)所属范畴数据操作语言(DML)数据定义语言(DDL)数据定义语言…...
C/C++运算优先级
文章目录 前言1.运算优先级表2.举例说明:总结 前言 最近复习C基础知识的时候,发现对这部分还是有些模糊。常用的 - ,括号等运算符对于它们的优先级还是比较明确的。但是涉及到移位运算,逻辑运算这种,再结合四则运算…...

apache搭建静态网站,moongoose搭建网站后台,出现的跨域问题解决
文章目录 1,问题描述1.1,当网页和后台是不同服务时会产生跨域问题1.2,跨域问题 2,nginx端口转发解决跨域问题2.1,下载并安装nginx2.1.1,解压后如下所示2.1.2,进入解压目录后,执行配置…...

LiveQing视频点播流媒体RTMP推流服务功能-支持视频点播分屏大屏展示视频轮巡分组播放RMP推流直播大屏展示
LiveQing支持视频点播分屏大屏展示视频轮播分组播放RMP推流直播大屏展示 1、分屏展示2、轮巡播放3、RTMP推流视频直播和点播流媒体服务 1、分屏展示 LiveQing支持将视频点播、鉴权直播,拉转直播视频流,进行分屏播放。 2、轮巡播放 3、RTMP推流视频直播和…...
tf loss构建常用到函数
1、tf.map_fn tf.map_fn是TensorFlow中的一个函数,用于对给定的函数和输入进行逐元素的映射,其定义如下: tf.map_fn(fn,elems,dtypeNone,parallel_iterationsNone,back_propTrue,swap_memoryFalse,infer_shapeTrue,nameNone,fn_output_sign…...
行为型模式-备忘录模式
备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 主要解决:所谓备忘录模式就是在不破坏…...
Android Studio初学者实例:RecyclerView学习--模仿今日头条--续
新学期开始了,这篇文章收到了很多人的评论有很多地方不懂,所以写下了以下的文章--续篇 首先使用RecyclerView也好还是使用ListView,更或是GridView你都要先构思需要什么 这些东西无一例外通常都是用在列表显示下,那么需要一些&a…...

栈和队列的C++模拟实现
一、栈stack 1.介绍(库里面的文档介绍) 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器适配器即是对…...

UE4/5:通过Blender制作BlendShape导入【UE4/5曲线、变形目标,blender形态键】
UE4/5里面,我们经常可以在一些骨骼模型上面看到相关的曲线,如Metahuman里面就是通过这个曲线来改变人物的脸部表情。 而这里笔者将教导如何去制作这种曲线。 这种曲线都是存在于骨骼模型上的,所以我们要么直接制作骨骼模型导入ue࿰…...

微信小程序进阶——后台交互
目录 一、后台准备 1.1 pom.xml 1.2 配置数据源 1.3 整合mybatis 二、前后端交互 2.1 method1 2.2 method2 2.2.1 封装request 2.2.2 头部引用util 2.2.3 编写方法 2.2.4 展示效果 三、WXS的使用 3.1 会议状态 3.1.2 引入wxs 3.1.3 修改代码 3.1.4 展示效果 3…...

二维码智慧门牌管理系统升级解决方案:突破传统,实现质检与抽检的个性化配置
文章目录 前言一、引入“独立质检”二、个性化抽检类别设定三、触发重采要素的功能升级四、升级优势与展望 前言 在数字化时代,智慧门牌管理系统已经成为社会管理的重要工具。为了满足各种复杂需求,系统升级是必然趋势。本次升级主要针对质检和抽检两大…...

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络
之前的序列学习中假设的目标是在给定观测的情况下对下一个输出进行建模,然而也存在需要后文预测前文的情况。 9.4.1 隐马尔可夫模型中的动态规划 数学推导太复杂了,略。 9.4.2 双向模型 双向循环神经网络(bidirectional RNNs)…...

【Axure高保真原型】可视化图表图标
今天和粉丝们免费分享可视化图表图标原型模板,包括柱状图、条形图、环形图、散点图、水波图等常用的可视化图表图标。 【原型效果】 【原型预览】 https://axhub.im/ax9/d402c647c82f9185/#c1 【原型下载】 这个模板可以在 Axure高保真原型哦 小程序里免费下载哦…...

安装mmcv及GPU版本的pytorch及torchvision
一、先装GPU版本的pytorch和torchvision pip install torch1.9.1cu111 torchvision0.10.1cu111 torchaudio0.9.1 -f https://download.pytorch.org/whl/torch_stable.html注意:以上适用cuda11.1版本 如果想离线安装,就看这篇文章 二、安装mmcv 看这篇…...

全国342个城市往返最短通勤时间(铁路)数据
全国342个城市往返最短通勤时间(铁路)数据 1、时间:采集时间是2022年 2、来源:12306 3、数据说明:数据采集12306数据,整理全国342个城市往返最短通勤时间,本数据是铁路包含动车、高铁所有路线…...
AWK语言第二版 第3章.探索性数据分析 3.1泰坦尼克号的沉没
这章也是第一版没有,第二版新增的。 3. 探索性数据分析 上一章给出了一些个人使用的小脚本,通常是特制或专用的。在本章中,我们还会展示Awk在现实中的典型使用场景:使用Awk和其他工具来非正式地探索一些真实的数据,目…...

微信小程序设计之主体文件app-json-window
一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...