当前位置: 首页 > news >正文

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 概念&#xff1a; CI/CD 是一种软件开发和交付方法&#xff0c;旨在加速应用程序的开发、测试和部署过程&#xff0c;以提高软件交付的质量和效率。 (1) 持续集成 (CI Continuous Integration): 持续集成是开发团队频繁集成其代码更改的过程。开发者将其…...

ES6 Class和Class继承

1.class的基本语法 class可以理解为是一个语法糖&#xff0c;将js只能通过构造函数创建实例的方法进行了补充 构造函数&#xff1a; function Person ({ name, age18 }) {this.name namethis.age age } new Person({name: 张三}) Class类&#xff1a; class Person {con…...

C++11 packaged_task

std::packaged_task 把一个方法打包成一个task扔到线程中执行&#xff0c;然后通过packaged_task中的furture等待执行结果。 void test_promise() {std::packaged_task <int()> task([]()->int {std::cout << "packaged_task begin \n" << std…...

delete、drop、truncate三兄弟

比较方面/具体命令deletetruncatedrop删除范围逐行删除&#xff08;记录行&#xff09;逐页删除&#xff08;数据页&#xff09;整张表&#xff08;数据表结构&#xff09;所属范畴数据操作语言&#xff08;DML&#xff09;数据定义语言&#xff08;DDL&#xff09;数据定义语言…...

C/C++运算优先级

文章目录 前言1.运算优先级表2.举例说明&#xff1a;总结 前言 最近复习C基础知识的时候&#xff0c;发现对这部分还是有些模糊。常用的 - &#xff0c;括号等运算符对于它们的优先级还是比较明确的。但是涉及到移位运算&#xff0c;逻辑运算这种&#xff0c;再结合四则运算…...

apache搭建静态网站,moongoose搭建网站后台,出现的跨域问题解决

文章目录 1&#xff0c;问题描述1.1&#xff0c;当网页和后台是不同服务时会产生跨域问题1.2&#xff0c;跨域问题 2&#xff0c;nginx端口转发解决跨域问题2.1&#xff0c;下载并安装nginx2.1.1&#xff0c;解压后如下所示2.1.2&#xff0c;进入解压目录后&#xff0c;执行配置…...

LiveQing视频点播流媒体RTMP推流服务功能-支持视频点播分屏大屏展示视频轮巡分组播放RMP推流直播大屏展示

LiveQing支持视频点播分屏大屏展示视频轮播分组播放RMP推流直播大屏展示 1、分屏展示2、轮巡播放3、RTMP推流视频直播和点播流媒体服务 1、分屏展示 LiveQing支持将视频点播、鉴权直播&#xff0c;拉转直播视频流&#xff0c;进行分屏播放。 2、轮巡播放 3、RTMP推流视频直播和…...

tf loss构建常用到函数

1、tf.map_fn tf.map_fn是TensorFlow中的一个函数&#xff0c;用于对给定的函数和输入进行逐元素的映射&#xff0c;其定义如下&#xff1a; tf.map_fn(fn,elems,dtypeNone,parallel_iterationsNone,back_propTrue,swap_memoryFalse,infer_shapeTrue,nameNone,fn_output_sign…...

行为型模式-备忘录模式

备忘录模式保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象。备忘录模式属于行为型模式。 意图&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。 主要解决&#xff1a;所谓备忘录模式就是在不破坏…...

Android Studio初学者实例:RecyclerView学习--模仿今日头条--续

新学期开始了&#xff0c;这篇文章收到了很多人的评论有很多地方不懂&#xff0c;所以写下了以下的文章--续篇 首先使用RecyclerView也好还是使用ListView&#xff0c;更或是GridView你都要先构思需要什么 这些东西无一例外通常都是用在列表显示下&#xff0c;那么需要一些&a…...

栈和队列的C++模拟实现

一、栈stack 1.介绍&#xff08;库里面的文档介绍&#xff09; 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对…...

UE4/5:通过Blender制作BlendShape导入【UE4/5曲线、变形目标,blender形态键】

UE4/5里面&#xff0c;我们经常可以在一些骨骼模型上面看到相关的曲线&#xff0c;如Metahuman里面就是通过这个曲线来改变人物的脸部表情。 而这里笔者将教导如何去制作这种曲线。 这种曲线都是存在于骨骼模型上的&#xff0c;所以我们要么直接制作骨骼模型导入ue&#xff0…...

微信小程序进阶——后台交互

目录 一、后台准备 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…...

二维码智慧门牌管理系统升级解决方案:突破传统,实现质检与抽检的个性化配置

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

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络

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

【Axure高保真原型】可视化图表图标

今天和粉丝们免费分享可视化图表图标原型模板&#xff0c;包括柱状图、条形图、环形图、散点图、水波图等常用的可视化图表图标。 【原型效果】 【原型预览】 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注意&#xff1a;以上适用cuda11.1版本 如果想离线安装&#xff0c;就看这篇文章 二、安装mmcv 看这篇…...

全国342个城市往返最短通勤时间(铁路)数据

全国342个城市往返最短通勤时间&#xff08;铁路&#xff09;数据 1、时间&#xff1a;采集时间是2022年 2、来源&#xff1a;12306 3、数据说明&#xff1a;数据采集12306数据&#xff0c;整理全国342个城市往返最短通勤时间&#xff0c;本数据是铁路包含动车、高铁所有路线…...

AWK语言第二版 第3章.探索性数据分析 3.1泰坦尼克号的沉没

这章也是第一版没有&#xff0c;第二版新增的。 3. 探索性数据分析 上一章给出了一些个人使用的小脚本&#xff0c;通常是特制或专用的。在本章中&#xff0c;我们还会展示Awk在现实中的典型使用场景&#xff1a;使用Awk和其他工具来非正式地探索一些真实的数据&#xff0c;目…...

微信小程序设计之主体文件app-json-window

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

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...