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 包已成功拷贝到远程服务器

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04.Finetune vs. Prompt

目录 语言模型回顾大模型的两种路线专才通才二者的比较 专才养成记通才养成记Instruction LearningIn-context Learning 自动Prompt 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》&#xff0c;B站自行搜索 语言模型回顾 GPT&#xff1a;文字接龙 How are __. Bert&a…

【LSTM-Attention】基于长短期记忆网络融合注意力机制的多变量时间序列预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic

前言 今天推荐一款基于DMSkin框架开发的网易云音乐播放器&#xff1a;DMSkin-CloudMusic。 DMSkin 框架介绍 DMSkin是一个开源的WPF样式UI框架&#xff0c;可以帮助开发者快速创建漂亮的用户界面。 下载体验 下载地址&#xff1a;https://github.com/944095635/DMSkin-Clou…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-HMI人机交互

书接上回 2.3.7HMI人机交互 2.3.7.1显示 (1)图标 序号 图标状态 (图形、颜色供参考) 含义说明 备注 1 辅助驾驶功能READY (允许激活) 2 辅助驾驶功能激活 3 辅助驾驶系统故障 4

ATPCS:ARM-Thumb程序调用的基本规则

为了使单独编译的c文件和汇编文件之间能够互相调用&#xff0c;需要制定一系列的规则&#xff0c;AAPCS就是ARM程序和Thumb程序中子程序调用的基本规则。 1、ATPCS概述 ATPCS规定了子程序调用过程中寄存器的使用规程、数据站的使用规则、参数的传递规则。为了适应一些特殊的需…

03、Python 字符串高级用法

目录 Python 字符串高级用法转义字符字符串格式化序列相关的方法大小写相关的方法dir 可以查看某个类的所有方法删除空白查找、替换相关方法 Python 字符串高级用法 转义字符 字符串格式化 序列相关的方法 字符串本质就是由多个字符组成&#xff0c;字符串的本质就是不可变序…

SpringBoot连接MySQL密码错误,报错:Access denied for user

记&#xff1a;一次连接MySQL报密码错误&#xff0c;Access denied for user 检查步骤&#xff1a; 核对用户和密码是否正确&#xff0c;用工具登陆试下。如果配置文件是yml格式&#xff0c;配置密码是123456这种纯数字&#xff0c;记得加上单/双引号。检查云上数据库配置&am…

基于PHP的创意设计分享系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

力扣每日一题59:螺旋矩阵||

题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&am…

【C语言小游戏--猜数字】

文章目录 前言1.游戏描述2.代码实现2.1打印菜单2.2构建基础框架2.3玩游戏2.3.1生成随机数2.3.1.1rand()2.3.1.2srand()2.3.1.3time() 2.3.2game() 2.4自己设定猜的次数 3.完整代码 前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏&#xff0c;下…

Javascript命令模式

Javascript命令模式 1 什么是命令模式2 命令模式的例子—菜单程序3 JavaScript 中的命令模式4 撤销命令5 宏命令 1 什么是命令模式 在一个餐厅中&#xff0c;当客人现场点餐或者打电话订餐时&#xff0c;老板会把客人的需求写在清单上&#xff0c;厨师会按照清单的顺序给客人炒…

驱动开发3 ioctl函数的使用+3个实例(不传递第三个参数、第三个参数为整型、第三个参数为地址)

开发板&#xff1a;stm32mp157aaa&#xff08;Cortex-A7*2 Cortex-M4*1&#xff09;开发环境&#xff1a;vscode、串口工具 1 引入ioctl函数的意义 linux操作系统中有意将数据的读写和读写功能的选择分别交给不同的函数去完成。就让read/write函数只进行数据的读写即可&#x…

多版本并发控制MVCC

什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;&#xff0c;多版本并发控制。顾名思义&#xff0c;MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之&#xff0c;…

SolidWorks模型导入到Gazebo中

首先建立好solidworks模型&#xff0c;然后另存为stl格式&#xff0c; 导出为STL文件时&#xff0c;文件名最好不要是中文&#xff0c;并且要将后缀STL改为stl&#xff0c;否则Gazebo无法识别 这是我创建好的机器人充电桩模型&#xff1a; 尺寸是单位是mm&#xff1a; 135mm …

【图像误差测量】测量 2 张图像之间的差异,并测量图像质量(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

图论06-【无权无向】-图的遍历并查集Union Find-力扣695为例

文章目录 1. 代码仓库2. 思路2.1 UF变量设计2.2 UF合并两个集合2.3 查找当前顶点的父节点 find(element) 3. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 思路 2.1 UF变量设计 parent数组保存着每个节点所指向的父节点的索引&#xff0c;初始值为…

面向对象(基础)特征一:封装性(encapsulation)

文章目录 一、介绍&#xff08;1&#xff09;封装性&#xff08;2&#xff09;权限修饰符 二、案例&#xff08;1&#xff09;案例1 三、练习&#xff08;1&#xff09;练习1&#xff08;2&#xff09;练习2&#xff08;3&#xff09;练习3&#xff08;4&#xff09;练习4 面向…

数据丢失恢复怎么操作好?五种方法帮您恢复数据

丢失文件可能会造成灾难性的后果&#xff0c;因此您绝对需要最好的 PC 恢复软件。数据恢复软件必须快速、可靠并涵盖大多数文件格式。我们列表中最好的工具是一个甚至可以检索隐藏文件的解决方案。我们选择的另一个解决方案能够恢复700 多种独特的文件格式。 这种噩梦可能发生…

【PyTorch实战演练】自调整学习率实例应用(附代码)

目录 0. 前言 1. 自调整学习率的常用方法 1.1 ExponentialLR 指数衰减方法 1.2 CosineAnnealingLR 余弦退火方法 1.3 ChainedScheduler 链式方法 2. 实例说明 3. 结果说明 3.1 余弦退火法训练过程 3.2 指数衰减法训练过程 3.3 恒定学习率训练过程 3.4 结果解读 4. …

华为OD机试 - 代表团坐车 - 动态规划(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…