【Jenkins从入门到精通:全面指南与实战教程】

下面这篇文章会带你一步步了解Jenkins,从基本概念到实际应用,帮助你快速上手这款强大的自动化工具。

1. Jenkins是什么?

Jenkins是一款开源的自动化服务器,广泛用于实现持续集成(CI)和持续交付(CD)。它由Kohsuke Kawaguchi在2004年创建,采用Java语言开发,能够帮助开发团队自动化构建、测试和部署软件,从而提高开发效率、减少人工错误并加快软件交付速度。

作为现代软件开发流程中的核心工具,Jenkins通过丰富的插件生态系统支持与各种版本控制系统、构建工具和部署平台的无缝集成。无论是小型项目还是大型企业级应用,Jenkins都能提供灵活可靠的自动化解决方案。

2. Jenkins的核心特性与优势

Jenkins之所以成为最流行的CI/CD工具,主要归功于其多项核心优势:

  • 开源免费:Jenkins是开源软件,可以自由使用和修改,降低了企业成本

  • 插件化架构:拥有超过千款插件,可以与Git、Docker、Kubernetes等主流工具无缝集成

  • 跨平台支持:可在Linux、Windows和macOS等主流操作系统上运行

  • 分布式构建:支持在多台机器上分布式执行构建任务,加速CI/CD流程

  • 易于扩展:通过插件和Pipeline脚本,可以轻松定制和扩展功能

3. 安装Jenkins:详细步骤指南

3.1 环境准备

在安装Jenkins之前,需要确保系统已安装Java环境。Jenkins通常需要Java 8或11版本。

Ubuntu/Debian系统安装Java:

sudo apt update sudo apt install openjdk-11-jdk

CentOS/RHEL系统安装Java:

sudo yum install java-11-openjdk-devel

验证Java安装是否成功:java -version

3.2 安装Jenkins

以下是主流操作系统的Jenkins安装方法:

Ubuntu/Debian系统:

# 添加Jenkins仓库密钥 wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - # 添加Jenkins软件源 sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' # 安装Jenkins sudo apt update sudo apt install jenkins

CentOS/RHEL系统:

# 添加Jenkins仓库 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安装Jenkins sudo yum install jenkins

Windows系统:从Jenkins官网下载MSI安装包,按向导完成安装。

3.3 启动Jenkins服务

安装完成后,需要启动Jenkins服务:

Linux系统:

sudo systemctl start jenkins sudo systemctl enable jenkins # 设置开机自启 sudo systemctl status jenkins # 检查服务状态

Windows系统:Jenkins会自动作为Windows服务启动。

3.4 防火墙配置

如果系统启用了防火墙,需要开放Jenkins的默认端口(8081):

sudo ufw allow 8081

3.5 用docker安装Jenkins

1. 环境准备

在开始之前,请确保你的机器上已经安装了 Docker。如果尚未安装,可以参考 Docker 官方文档进行安装:Docker安装指南

2. 拉取 Jenkins 官方 Docker 镜像

Jenkins 官方提供了适用于 Docker 的镜像,我们可以直接从 Docker Hub 拉取该镜像。打开终端并执行以下命令:

这里的jenkins/jenkins:lts是 Jenkins 的长期支持(LTS)版本,通常是最稳定的版本。

拉取镜像
docker pull jenkinsci/blueocean

建议使用的Docker映像是jenkinsci/blueoceanimage
(来自 the Docker Hub repository
)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本
(可以投入使用) ,捆绑了所有Blue Ocean
插件和功能。这意味着你不需要单独安装Blue Ocean插件。

或者

docker pull jenkins/jenkins:latest
查看镜像
docker images

安装jenkins
创建工作目录
cd /var/lib mkdir -p /var/lib/jenkins
配置权限

查看jenkins当前权限

ls -nd jenkins/

配置jenkins权限

chmod 777 jenkins/
创建Jenkins容器

cd 到根目录

cd ~

安装并启动 jenkins 容器

docker run -itd -p 8081:8080 -p 10241:50000 --name jenkins --privileged=true -v /var/lib/jenkins:/var/jenkins_home --restart=always jenkins/jenkins:latest

-it:开启输入功能并连接伪终端

-d:后台运行容器

–name:为容器指定一个名称

-p:端口映射,格式为主机(宿主)端口:容器端口,可在application.yaml配置。

-p 8081:8080 将镜像的8080 端口映射到服务器的8081端口。

-p 10241:50000 将镜像的50000端口映射到服务器的10241端口

-v:工作目录映射。形式为:-v 宿主机路径,后者不能修改。

–restart:建议设置为always,在 Docker 启动的时候自动启动 Halo 容器。

端口映射
# 查看防火墙状态 systemctl status firewalld # 启动防火墙 systemctl start firewalld # 开启8081端口 firewall-cmd --zone=public --add-port=8081/tcp --permanent # 开启10241端口 firewall-cmd --zone=public --add-port=10241/tcp --permanent # 重启防火墙才能生效 systemctl restart firewalld # 或者重新启动防火墙 firewall-cmd --reload # 查看已经开放的端口 firewall-cmd --list-ports # 关闭防火墙命令: systemctl stop firewalld # 查看防火墙状态 sudo ufw status # 安装防火墙 sudo sudo apt-get install ufw # 启动防火墙 sudo ufw enable # 开启8081端口 sudo ufw allow 8081 # 开启10241端口 sudo ufw allow 10241 # 开启完成,需要重启防火墙生效 sudo ufw reload # 查看端口信息 sudo ufw status # 关闭防火墙命令: sudo ufw disable
查看jenkins是否启动

jenkins 进程

ps -ef | grep jenkins

查看启动日志

docker logs jenkins
配置镜像加速
cd /var/lib/jenkins/

修改hudson.model.UpdateCenter.xml里的内容

vim hudson.model.UpdateCenter.xml

修改前

<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://updates.jenkins.io/update-center.json</url> </site> </sites>

将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

修改后

<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site> </sites>

4. 初始配置与设置

4.1 解锁Jenkins

首次访问Jenkins(通过http://服务器IP:8081),需要输入初始管理员密码。密码位于服务器上的特定文件中:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

4.2 插件安装

解锁后,Jenkins会提示安装插件。建议先更换国内镜像源以提高下载速度。

更换镜像源方法:

  1. 修改/var/lib/jenkins/hudson.model.UpdateCenter.xml文件

  2. 将URL改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

  3. 重启Jenkins服务:sudo systemctl restart jenkins

然后选择"安装推荐插件"或根据需要自定义安装常用插件。

后续安装插件如下:

4.3 创建管理员用户

插件安装完成后,创建管理员账户并配置实例URL,完成初始设置。

5. 创建和配置第一个Jenkins任务

5.1 新建任务

在Jenkins主界面,点击"新建任务",选择"自由风格项目",输入任务名称。

5.2 配置源码管理

在"源代码管理"部分,选择Git并配置仓库地址。如需认证,在"凭据"中添加Git用户名和密码或SSH密钥。

5.3 配置构建触发器

常见的构建触发器包括:

  • 定时构建:使用Cron表达式定期执行构建

  • 轮询SCM:定期检查代码仓库变化

  • GitHub webhook:代码推送到仓库时自动触发构建

5.4 配置构建步骤

根据项目类型添加构建步骤。例如,对于Maven项目:

mvn clean install

对于Node.js项目:

npm install npm test

5.5 构建后操作

配置构建完成后的操作,如:

  • 归档构件:保存构建产物(JAR、WAR文件等)

  • 发送通知:通过邮件或Slack发送构建结果

  • 部署应用:自动部署到测试或生产环境

6. 使用Pipeline实现高级CI/CD

Jenkins Pipeline允许通过代码定义整个CI/CD流程,更加灵活和强大。

6.1 创建Pipeline项目

新建任务时选择"流水线",在Pipeline部分定义脚本。以下是一个简单示例:

pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/yourusername/yourrepository.git' } } stage('Build') { steps { sh 'mvn clean install' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'scp target/*.jar user@yourserver:/path/to/deploy' } } } }

这个Pipeline定义了四个阶段:代码检出、构建、测试和部署。

7. 管理与维护Jenkins

7.1 插件管理

通过"系统管理" > "插件管理"安装和管理插件。常用插件包括:

  • Git Plugin:Git版本控制集成

  • Docker Plugin:在容器中执行构建任务

  • Pipeline Plugin:支持Pipeline功能

  • Role-based Authorization Strategy:角色权限管理

7.2 安全性配置

  • 配置用户权限和访问控制

  • 使用"凭据管理"安全存储密码和密钥

  • 定期更新Jenkins和插件以确保安全

7.3 备份与恢复

定期备份JENKINS_HOME目录(默认在/var/lib/jenkins),包含所有配置、任务和插件数据。可使用ThinBackup等插件实现自动备份。

8. 常见问题与解决方案

  1. 端口冲突:修改/etc/sysconfig/jenkins中的HTTP_PORT变量,更改默认端口

  2. 插件安装失败:检查网络连接,或更换国内镜像源

  3. 权限问题:确保Jenkins用户有访问相关文件和目录的权限

  4. Java环境问题:确保JAVA_HOME环境变量正确配置

9. 总结

Jenkins作为功能强大的自动化服务器,能够显著提升软件开发和交付的效率。通过本文的指导,您可以完成从安装到配置的整个过程,并创建自己的自动化流水线。

随着对Jenkins的深入了解,您可以探索更多高级功能,如分布式构建与Docker和Kubernetes集成以及复杂的Pipeline设计,进一步优化您的CI/CD流程。

无论您是开发人员、测试工程师还是DevOps专家,掌握Jenkins都将为您的职业发展带来显著优势,帮助您构建更可靠、高效的软件交付流程。

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

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

相关文章

ADB命令-Kernel常用信息

adb shell uname -a 查看完整内核信息adb shell cat /proc/version 查看系统版本文件adb shell cat /proc/version 查看系统信息adb shell cat /proc/meminfo 查看内存信息adb shell cat /proc/cpuinfo 查看CPU信息adb…

英语期末复习

重点单词 \(pronunciation\) n.发音;读音\(pronounce\) v.发音;宣布\(expression\) n.表情;表示\(express\) v.表达;表示\(discover\) v.发现;发觉\(discovery\) n.发现\(create\) v.创造;创建\(creative\) adj.…

ADB命令-Kernel-Debug

adb shell mount -t debugfs /debug /sys/kernel/debug 挂载debug文件系统,重启后失效adb shell umount /sys/kernel/debug 卸载debug文件系统adb shell cat /sys/kernel/debug/gpioadb shell cat d/gpio 是debug/gp…

33.排序链表

LCR 077. 排序链表 给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1:输入:head = [4,2,1,3] 输出:[1,2,3,4] 【思路】 利用ArrayList 记录链表中的数值val ,并排序。再逐个建立新结点 赋…

折线图的奇妙变奏:四种创意可视化方法

想象一下折线图就像一条普通的公路,它能带我们从A点到达B点。 但有时我们需要更特别的路线:环岛、盘山公路、波浪形赛道或螺旋上升的通道。 在数据可视化中,标准的折线图有时无法充分展示数据的特性,这时我们就需要…

Reactor线程池切换publishOn与subscribeOn

在 Reactor&#xff08;Project Reactor&#xff09;中&#xff0c;publishOn 和 subscribeOn 是用于 切换执行线程&#xff08;调度器&#xff09; 的两个操作符&#xff0c;但它们的行为和用途 截然不同。下面是它们的详细区别与使用说明。 &#x1f9e0; 一句话理解 **subs…

本地win系统和vmware 虚拟机 ubuntu实现文件共享

在实际的工作开发中&#xff0c;经常会运用到虚拟机的情况。当然&#xff0c;随着win系统版本地提升&#xff0c;从win10开始&#xff0c;本身win系统也自带了虚拟机的功能。但有一些老式的机子&#xff0c;是不支持的。为此&#xff0c;我就以 vmware 安装 ubuntu 来实现它与本…

CDC虚拟串口与硬件串口传输速度的对比测试

CDC串口是指通过USB接口模拟传统串行通信端口(COM口)的一种技术,其全称为‌通信设备类(Communication Device Class)。而硬件串口是一种传统的串口。 USB CDC串口可支持最高12Mbps的传输速度(USB 2.0),而硬件的…

数据结构:加权图 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Xcode中iOS资源混淆问题与解决方案详解

iOS 资源混淆 概述 XCode项目中的文件夹分成两类: group 和 directory reference, 分别是虚结构和实结构. 黄色的 group 是默认的格式, 它的结构和磁盘上的文件夹毫无关系, 仅仅表示资源的逻辑组织结构, 这在管理源文件是非常方便. 同一段代码可以被很多项目使用, 也可能只使…

导师推荐2026 TOP10 AI论文软件:本科生毕业论文写作全解析

导师推荐2026 TOP10 AI论文软件&#xff1a;本科生毕业论文写作全解析 2026年AI论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始依赖AI论文软件来提升写作效率与质量。然而&#xff0c;面对市场上…

2026年豆包优化工具选型:从技术底层到效果落地5大核心评估

2026年&#xff0c;当企业把AI搜索作为流量增长的“第二曲线”&#xff0c;豆包凭借专业场景语义理解和高精准用户匹配的优势&#xff0c;成为医疗、宠物服务、新能源等垂直行业的“流量金矿”。但很多企业试过工具后发现&#xff1a;内容总被判定“不相关”、排名上去了但询盘…

2026年1月DeepSeek优化服务商口碑TOP10:从技术到效果转化的选型

2026年&#xff0c;生成式引擎优化&#xff08;GEO&#xff09;行业迎来规模化发展机遇。据《2025中国AI商业服务白皮书》数据显示&#xff0c;GEO市场规模已突破128亿元&#xff0c;近三年复合增长率达到41.7%。《2024生成式AI搜索生态研究报告》指出&#xff0c;随着AI搜索技…

Git代码规范

分支命名分支与环境对应关系( 1 ) type&#xff08;必须&#xff09; : commit 的类别&#xff0c;只允许使用下面几个标识&#xff1a;常用的提交类型包括提交类型描述示例feat新功能增加&#xff08;feature&#xff09;feat: add user login featurefix修复BUGfix: correct …

亲测好用10个AI论文网站,继续教育学生轻松搞定毕业论文!

亲测好用10个AI论文网站&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的继续教育学生开始借助 AI 工具来提升论文写作效率。尤其是 AI 降重工具的出现&#xff0c;不仅有效降低了 AIGC 率&#xff…

37、SQL的Explain

项目场景&#xff1a; SQL的Explain explain&#xff08;SQL 优化工具标准&#xff09;问题描述 今天下雨&#xff0c;小明去上班&#xff0c;之前维护的SQL&#xff0c;运行了一段时间&#xff0c;然后下午就 报错了~~~原因分析&#xff1a;解决方案&#xff1a;使用explain&a…

2026年主流GEO公司(服务商)选型与技术方案全景解析

声明:AI平台无官方广告,企业可通过GEO(生成式引擎优化)方式,使品牌信息自然融入AI生成内容。中国信通院数据显示,2026年国内GEO行业市场规模将增至286亿元,增速领跑AI营销赛道,超三分之一网页内容将专为AI搜索…

sql存储

1、查看已经创建的存储结构 格式:show create procedure 存储名; show create procedure c1; 2、查看所有已经创建好的存储 show PROCEDURE status ; 3、指定数据库查询存储 格式: show PROCEDURE statu…

c++实现交互式地震层位解释的软件

基于您的查询“c++实现交互式地震层位解释的软件”,结合当前的搜索结果,我为您提供以下信息和建议。1. 现有资源与工具分析根据搜索结果,目前并没有一个现成的、开源的、完整的“交互式地震层位解释软件”可以直接下…

JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构 - 实践

JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…