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

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开发的开源持续集成工具&#xff0c;它提供了一个开放且易用的软件平台&#xff0c;主要用于自动化构建、测试和部署软件项目&#xff0c;以实现持续集成&#xff08;CI&#xff09;和持续交付/部署&#xff08;CD&#xff09;。…...

ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义

在 uart_driver_install 函数中&#xff0c;参数 RX_BUF_SIZE * 2 指定了接收缓冲区&#xff08;RX buffer&#xff09;的大小。这个参数对于 UART 驱动程序来说非常重要&#xff0c;因为它决定了可以存储多少接收到的数据&#xff0c;直到应用程序读取它们为止。下面是对该函数…...

Ubuntu把应用程序放到桌面

有时候我们下载的软件是一个文件夹&#xff0c;通常需要进入进入指定文件夹下去执行.sh 文件来启动&#xff0c;下面来个实例如何把idea放到桌面 打开文件目录/usr/share/applications/或者~/.local/share/applications/目录。第一个目录是全局的&#xff0c;所有用户都可以使…...

什么是端口映射

端口映射 端口映射&#xff08;Port Mapping&#xff09;是一种网络技术&#xff0c;用于将外部网络请求转发到内部网络的特定设备或服务。它通常用于以下场景&#xff1a; 外部访问内部服务&#xff1a;允许外部用户通过公网IP访问内网中的设备或服务。多设备共享IP&#xf…...

数据结构《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结构 论文题目&#xff1a;ELGC-Net: Efficient Local-Global Context Aggregation for Remote Sensing Change Detection 论文链接&#xff1a;https://arxiv.org/pdf/2403.17909 官方github&#xff1a;https://github.com/techmn/elgcnet 高效局部-全局上下文聚合器&…...

MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解

MERN 全栈脚手架是一种用于快速构建基于 MongoDB、Express、React 和 Node.js 的全栈应用的框架或模板。它帮助开发者快速启动项目&#xff0c;减少了从零开始配置的时间。以下是关于 MERN 全栈脚手架的详细解析。 一、MERN 技术栈简介 MongoDB: 文档型数据库&#xff0c;用于…...

基于springboot+vue+微信小程序的宠物领养系统

基于springbootvue微信小程序的宠物领养系统 一、介绍 本项目利用SpringBoot、Vue和微信小程序技术&#xff0c;构建了一个宠物领养系统。 本系统的设计分为两个层面&#xff0c;分别为管理层面与用户层面&#xff0c;也就是管理者与用户&#xff0c;管理权限与用户权限是不…...

如何使用策略模式并让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&#xff0c;返回一个可变的 ref 对象&#xff0c;其 .current 属性被初始化为传入的参数。这个对象在组件的整个生命周期内保持不变。 2. 主要用途和特性 2.1 获取 DOM 元素实例 function TextInputWithFocusButton() {const inpu…...

使用 Docker 部署 Java 项目(通俗易懂)

目录 1、下载与配置 Docker 1.1 docker下载&#xff08;这里使用的是Ubuntu&#xff0c;Centos命令可能有不同&#xff09; 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile&#xff0c;并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …...

如何在Ubuntu上安装和配置Git

版本控制系统&#xff08;VCS&#xff09;是软件开发过程中不可或缺的工具之一&#xff0c;它帮助开发者跟踪代码变更、协作开发以及管理不同版本的项目。Git作为当前最流行的分布式版本控制系统&#xff0c;因其高效性和灵活性而广受青睐。本文将指导你如何在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客户端&#xff0c;它允许用户与Redis数据库进行交互和管理。 以下是一些常用参数的使用说明&#xff1a; 基本连接参数 -h, --host <hostname>&#xff1a;指定要连接的Redis服务器的主机名或IP地址。如果未指定&#xff0c;…...

使用Matplotlib显示中文的方法

1 问题提出 使用图1所示的代码进行matplotlib绘图时&#xff0c;因为其默认不支持中文&#xff0c;此时无法显示正确内容&#xff0c;如图2所示。 图1 matplotlib绘图绘图代码 图2 matplotlib无法显示中文 2 问题解决 2.1 设置全局字体 在图1所示的代码中&#xff0c;第13…...

SQL Server2022详细安装教程

1. 打开SQL Server官网&#xff1a;SQL Server 下载 | Microsoft 2. 选择Developer版 3. 下载好安装包&#xff0c;打开&#xff0c;选择自定义 4. 选择下载位置&#xff0c;最好不要在C盘即主磁盘即可。等待下载 5. 下载成功之后会弹出这个框 6. 点击“安装”&#…...

家里温度随心控,假期出行更舒适~

春节假期马上到来啦&#xff01;这是放松身心、陪伴家人的最佳时机~      但旅途结束的温差变化、空气质量问题是否让你有些担忧呢&#xff1f;      别担心&#xff01;有了约克VRF中央空调&#xff0c;让你的假期更加舒心无忧~      清新空气&#xff0c;自在出游…...

压力测试详解

压力测试 压力测试是一种软件测试&#xff0c;用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&#xff0c;并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试&#xff0c;并评估软件在极端…...

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时&#xff0c;仅是在客户端的视角下连接已经断开&#xff0c;在服务端的眼中&#xff0c;连接依然存在&#xff0c;为什么&#xff1f;——触发EPOLLRDHUP事件&#xff1a;对端关闭连接或停止写…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...