Jenkins安装、插件下载及构建环境配置详解
Jenkins简介
1.1 简介
Jenkins 是一个基于Java开发的开源持续集成工具,它提供了一个开放且易用的软件平台,主要用于自动化构建、测试和部署软件项目,以实现持续集成(CI)和持续交付/部署(CD)。
自动化构建:Jenkins能够自动从版本控制系统中拉取最新的代码,并根据项目配置的构建脚本或命令进行编译和构建;
自动化测试:Jenkins能集成各种测试工具和框架,如JUnit、Selenium等,自动运行测试并生成测试报告;
自动化部署:如果测试通过,Jenkins还能将构建好的软件包自动部署到目标环境中,如测试服务器、生产服务器等;
持续集成(CI):持续集成是一种软件开发实践,支持开发人员频繁地将代码集成到主干分支。在每次集成都通过自动化的构建(包括编译、打包、部署、测试)来验证,从而尽早地发现和修复错误;
持续交付/部署(CD):持续部署(Continuous Deployment)是在持续集成的基础上,自动将通过测试的代码部署到生产环境。持续交付(Continuous Delivery)则是指将集成后的代码部署到更贴近真实运行环境的类生产环境中,以便进行更多的测试,如果代码没有问题,可以继续手动部署到生产环境;
1.2 工作流程
持续集成(CI) 工作流程
1)开发人员提交代码到版本控制系统(如 git );
2)Jenkins检测到代码变更后,自动触发构建任务;
3)Jenkins执行构建脚本(如Maven构建),生成可部署的软件包;
4)Jenkins执行单元测试和其他自动化测试,验证新代码与原有代码的集成情况;
5)根据测试结果,Jenkins生成构建报告,并通过邮件、RSS等方式通知相关人员;
持续交付/部署(CD)工作流程
1)Jenkins在持续集成阶段完成构建和测试后,生成可部署的软件包;
2)Jenkins将软件包部署到类生产环境(如Staging环境)中进行更多的测试;
3)测试人员执行手动测试或自动化测试,验证软件包的稳定性和功能正确性;
4)如果测试通过,开发人员或运维人员可以手动将软件包部署到生产环境;
Docker安装Jenkins镜像
2.1 环境准备
1)安装Docker、docker-compose
2.2 Jenkins安装
1)拉取Jenkins镜像
可通过Jenkins官网首页的Download,选择Docker方式,进入Hub的Docker镜像仓库进行下载。但由于外网可能无法访问,可以从国内可用的Docker镜像仓库中下载。如:Docker Hub Search,下载 lts 长期维护版本。
docker pull jenkins/jenkins:2.479.3-lts
2)创建docker-compose.yml
2.1)先创建一个目录,用于存放该yml文件,如/usr/local/docker/jenkins_docker;
2.2)在jenkins_docker目录中,创建data目录,作为jenkins容器和宿主机的数据卷映射目录;
docker-compose.yml的内容如下:
version: '3.1'
services:jenkins: # docker实例名称image: jenkins/jenkins:2.479.3-lts # 使用的镜像container_name: jenkins # docker容器名称ports: # 端口映射- 8080:8080 - 50000:50000 volumes: # 数据卷映射- ./data/:/var/jenkins_home/ # 本机当前地址的data目录,映射到容器的/var/jenkins_home目录
说明:
1)8080端口是Jenkins默认的端口;
2)50000端口主要用于JNLP(Java Web Start)通信。 Jenkins使用JNLP协议来启动Java应用程序,而50000端口是JNLP协议所需的端口;
3)/var/jenkins_home:默认情况下,Jenkins将其所有数据存储在文件系统的此目录中;
3)启动容器
docker-compose up -d
4)查看日志
docker logs -f jenkins # 查看jenkins启动的初始密码

密码如果忘记,也可以从jenkins容器的 /var/jenkins_home/secrets/initialAdminPassword 文件中查看。
2.3 登录Jenkins
1)在浏览器中访问Jenkins
http://IP:8080

首次登录使用Jenkins提供的初始密码,如果忘记,在界面有提示密码的位置。
2)选择“选择插件来安装”

3)安装插件,直接点击“安装”即可

在插件安装过程中,可能很多插件会按照失败,即使全部失败也没有关系。后续可在后台管理中根据需要安装插件。
如果插件安装失败,如果一直安装失败,可以重新设置下载地址。修改的文件在容器的/var/jenkins_home/hudson.model.UpdateCenter.xml。由于在docker-compose.yml对该目录做了数据卷映射,所以该文件也在宿主机的 /var/local/docker/jenkins_docker/data目录中。修改的信息如下:
<?xml version='1.1' encoding='UTF-8'?>
<sites><site><id>default</id><url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url></site>
</sites>
4)创建新用户

插件安装完之后(没安装成功也没有关系,点击下一步进行用户创建),进入用户创建。
5)实例配置

自动识别jenkins的url,点击“保存并完成”即可。
6)进入Jenkins

Jenkins 插件安装
3.1 后台插件管理
1)进入插件管理界面

通过Manage Jenkins菜单,选择Plugins,进入插件管理界面。
2)选择插件,并安装

a)Available plugins:可用未安装的插件列表,可进行搜索,选择要安装的创建。可以搜索Chinese,查找中文插件;
b)Installed plugins:已安装的插件列表;
c)选择要安装的插件后点击“安装”即可;
d)Advanced settings:高级设置;
3.2 高级插件安装
1)从官网后台下载需要安装的插件

输入要下载的插件,进行搜索。
2)下载插件


查找一个合适的版本,下载对应的hpi文件。
3)管理后台安装插件

在插件管理后台,选择“Advanced settings”,选中下载的hpi(如果不下载,直接在url中输入url地址也可以),点击“部署”,进入插件安装流程。

Jenkins Maven 构建环境配置
对于使用Maven构建的Java项目,需要Maven及JDK。
4.1 资料准备
1)下载JDK(以下以1.8为例)、Maven,并上传到服务器;
2)Maven 配置,修改Maven的settings.xml文件,添加阿里仓库地址、配置JDK;
2.1)添加阿里仓库。在<mirrors>标签中添加如下:
<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2.2)配置JDK,以下以1.8为例。在<profiles>标签中添加如下:
<profile><id>jdk8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
4.2 将Maven和JDK解压到Jenkins容器
在安装Jenkins容器时,将data目录映射到容器的/var/jenkins_home目录,所以只需将Maven和JDK放在data目录即可。本例为/usr/local/docker/jenkins_docker/data目录。
4.3 在Jenkins 后台配置Maven和JDK
1)进入“全局工具配置”

2)Maven和JDK配置
在全局工具配置中,默认可安装或配置JDK、Git、Gradle、Ant、Maven。
在全局工具配置中,除了上面的安装项以外,还可以通过安装插件,扩展更多的功能。如SonarQube Scanner插件,进行代码质量检查。
2.1)JDK安装

a)JDK可自动安装,如果已经下载并上传到Jenkins容器,则取消“自动安装”的选择性,输入jdk的目录;
b)如果输入的目录错误,会自动提示;
2.2)Maven安装

Maven的安装和JDK的安装一样。
结尾
以上为本篇分析的全部内容。
关于本篇内容你有什么自己的想法或独到见解,欢迎在评论区一起交流探讨下吧。
相关文章:
Jenkins安装、插件下载及构建环境配置详解
Jenkins简介 1.1 简介 Jenkins 是一个基于Java开发的开源持续集成工具,它提供了一个开放且易用的软件平台,主要用于自动化构建、测试和部署软件项目,以实现持续集成(CI)和持续交付/部署(CD)。…...
ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
在 uart_driver_install 函数中,参数 RX_BUF_SIZE * 2 指定了接收缓冲区(RX buffer)的大小。这个参数对于 UART 驱动程序来说非常重要,因为它决定了可以存储多少接收到的数据,直到应用程序读取它们为止。下面是对该函数…...
Ubuntu把应用程序放到桌面
有时候我们下载的软件是一个文件夹,通常需要进入进入指定文件夹下去执行.sh 文件来启动,下面来个实例如何把idea放到桌面 打开文件目录/usr/share/applications/或者~/.local/share/applications/目录。第一个目录是全局的,所有用户都可以使…...
什么是端口映射
端口映射 端口映射(Port Mapping)是一种网络技术,用于将外部网络请求转发到内部网络的特定设备或服务。它通常用于以下场景: 外部访问内部服务:允许外部用户通过公网IP访问内网中的设备或服务。多设备共享IP…...
数据结构《MapSet哈希表》
文章目录 一、搜索树1.1 定义1.2 模拟实现搜索 二、Map2.1 定义2.2 Map.Entry2.3 TreeMap的使用2.4 Map的常用方法 三、Set3.1 定义3.2 TreeSet的使用3.3 Set的常用方法 四、哈希表4.1 哈希表的概念4.2 冲突4.2.1 冲突的概念4.2.2 冲突的避免1. 选择合适的哈希函数2. 负载因子调…...
【QT】QComboBox:activated信号和currentIndexChanged信号的区别
目录 1、activated1.1 原型1.2 触发机制1.3 使用场景1.4 连接信号和槽的方法1.4.1 方式一1.4.2 方式二 2、currentIndexChanged2.1 原型2.2 触发机制2.3 使用场景2.4 连接信号和槽的方法 1、activated 1.1 原型 [signal] void QComboBox::activated(int index) [signal] void…...
【Block总结】ELGCA模块,池化-转置(PT)注意力和深度卷积有效聚合局部和全局上下文信息
ELGCA结构 论文题目:ELGC-Net: Efficient Local-Global Context Aggregation for Remote Sensing Change Detection 论文链接:https://arxiv.org/pdf/2403.17909 官方github:https://github.com/techmn/elgcnet 高效局部-全局上下文聚合器&…...
MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解
MERN 全栈脚手架是一种用于快速构建基于 MongoDB、Express、React 和 Node.js 的全栈应用的框架或模板。它帮助开发者快速启动项目,减少了从零开始配置的时间。以下是关于 MERN 全栈脚手架的详细解析。 一、MERN 技术栈简介 MongoDB: 文档型数据库,用于…...
基于springboot+vue+微信小程序的宠物领养系统
基于springbootvue微信小程序的宠物领养系统 一、介绍 本项目利用SpringBoot、Vue和微信小程序技术,构建了一个宠物领养系统。 本系统的设计分为两个层面,分别为管理层面与用户层面,也就是管理者与用户,管理权限与用户权限是不…...
如何使用策略模式并让spring管理
1、策略模式公共接口类 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式业务实现类 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…...
react中hooks之useRef 用法总结
1. 基本概念 useRef 是 React 的一个 Hook,返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数。这个对象在组件的整个生命周期内保持不变。 2. 主要用途和特性 2.1 获取 DOM 元素实例 function TextInputWithFocusButton() {const inpu…...
使用 Docker 部署 Java 项目(通俗易懂)
目录 1、下载与配置 Docker 1.1 docker下载(这里使用的是Ubuntu,Centos命令可能有不同) 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile,并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …...
如何在Ubuntu上安装和配置Git
版本控制系统(VCS)是软件开发过程中不可或缺的工具之一,它帮助开发者跟踪代码变更、协作开发以及管理不同版本的项目。Git作为当前最流行的分布式版本控制系统,因其高效性和灵活性而广受青睐。本文将指导你如何在Ubuntu操作系统上…...
FPGA 21 ,深入理解 Verilog 中的基数,以及二进制数与十进制数之间的关系( Verilog中的基数 )
目录 前言 一. 基数基础 1.1 基数介绍 2.1 基数符号 3.1 二进制数 二. 二进制与十进制数 三. 二进制数 3.1 定义寄存器类型变量 3.2 定义线网类型变量 3.3 赋值操作 3.4 解析二进制数为十进制数 四. 代码示例 五. 注意事项 六. 更多操作 前言 在Verilog中&#…...
【redis】redis-cli命令行工具的使用
redis-cli命令行工具是一个功能强大的Redis客户端,它允许用户与Redis数据库进行交互和管理。 以下是一些常用参数的使用说明: 基本连接参数 -h, --host <hostname>:指定要连接的Redis服务器的主机名或IP地址。如果未指定,…...
使用Matplotlib显示中文的方法
1 问题提出 使用图1所示的代码进行matplotlib绘图时,因为其默认不支持中文,此时无法显示正确内容,如图2所示。 图1 matplotlib绘图绘图代码 图2 matplotlib无法显示中文 2 问题解决 2.1 设置全局字体 在图1所示的代码中,第13…...
SQL Server2022详细安装教程
1. 打开SQL Server官网:SQL Server 下载 | Microsoft 2. 选择Developer版 3. 下载好安装包,打开,选择自定义 4. 选择下载位置,最好不要在C盘即主磁盘即可。等待下载 5. 下载成功之后会弹出这个框 6. 点击“安装”&#…...
家里温度随心控,假期出行更舒适~
春节假期马上到来啦!这是放松身心、陪伴家人的最佳时机~ 但旅途结束的温差变化、空气质量问题是否让你有些担忧呢? 别担心!有了约克VRF中央空调,让你的假期更加舒心无忧~ 清新空气,自在出游…...
压力测试详解
压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…...
从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系
目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时,仅是在客户端的视角下连接已经断开,在服务端的眼中,连接依然存在,为什么?——触发EPOLLRDHUP事件:对端关闭连接或停止写…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...
