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
一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
