Java学习第一百零九部分——Jenkins(一)
目录
一、前言简介
二、核心价值与优势
三、关键概念
四、下载安装与配置
五、总结归纳概述
一、前言简介
Jenkins 是一个开源的、基于 Java 的自动化服务器。它的核心使命是实现持续集成和持续交付。简单来说,Jenkins 是一个强大的工具,用于自动化软件开发过程中那些重复性的、容易出错的任务,示例如下:
- 构建: 编译源代码(如 Java、C++、Python)。
- 测试: 自动运行单元测试、集成测试等。
- 打包: 将代码打包成可部署的格式(如 JAR、WAR、Docker 镜像)。
- 部署: 将构建好的软件包自动部署到测试环境、预生产环境或生产环境。
- 报告: 收集构建和测试结果,生成报告,通知相关人员。
二、核心价值与优势
1. 持续集成: 每当开发人员将代码更改提交到版本控制系统(如 Git、SVN),Jenkins 可以自动触发一次构建和测试过程。这有助于尽早发现集成错误,提高软件质量。
2. 持续交付/部署: 在 CI 的基础上,进一步自动化部署流程,使得软件能够更快速、更可靠地发布到生产环境。
3. 自动化: 解放开发者手动执行繁琐任务的时间,让他们专注于更有价值的工作(如写代码、设计)。
4. 提高效率: 自动化流程大大缩短了从代码提交到产品上线的周期。
5. 提高质量: 频繁的自动化测试能快速捕获缺陷,防止问题累积。
6. 可视化: 提供直观的 Web 界面,展示构建历史、测试结果、控制台输出等,方便监控和排查问题。
7. 可扩展性: 这是 Jenkins 的一大亮点。它拥有**极其庞大且活跃的插件生态系统**(超过 1800 个插件)。这些插件使得 Jenkins 能够:
-
集成几乎所有主流的版本控制系统(Git, SVN, Mercurial 等)。
-
支持各种构建工具(Maven, Gradle, Ant, Make, npm 等)。
-
与测试框架(JUnit, TestNG, Selenium 等)无缝协作。
-
部署到各种环境(物理机、虚拟机、容器如 Docker、Kubernetes,云平台如 AWS、Azure、GCP)。
-
集成通知工具(邮件、Slack、Teams 等)。
-
支持各种项目类型(自由风格项目、Pipeline 等)。
8. 跨平台: 基于 Java 开发,可以在任何支持 Java 的平台上运行(Windows, Linux, macOS)。
9. 社区支持: 作为最老牌、最广泛使用的 CI/CD 工具之一,拥有庞大且活跃的社区,提供丰富的文档、教程和问题解答。
三、关键概念
-
作业: Jenkins 中自动化任务的基本单位。一个作业定义了要执行的一系列步骤(如拉取代码、编译、测试、部署)。
-
构建: 执行一次作业的过程称为一次构建。每次构建会产生结果(成功、失败、不稳定)和日志。
-
节点/代理: Jenkins 可以在主服务器上执行任务,也可以通过代理节点将任务分发到其他机器上执行,实现分布式构建。
-
Pipeline: 现代 Jenkins 的核心。使用代码(通常是 Groovy 语法写在 `Jenkinsfile` 中)来定义整个构建、测试和部署流程。Pipeline 将多个阶段可视化地连接起来,提供了更强大、更灵活、更可维护的自动化能力。
-
插件: 扩展 Jenkins 功能的模块。
四、下载安装与配置
一、准备工作
Jenkins 基于 Java,需提前安装Java 11 或 17。
二、安装 Jenkins
Windows 系统
1. 下载安装包:官网下载:https://www.jenkins.io/download/](https://www.jenkins.io/download/ → 选择 Windows 版本。
2. 运行安装程序:双击 `.msi` 文件,按向导安装(建议保持默认路径)。
3. 启动服务:安装完成后自动启动 Jenkins 服务,访问 `http://localhost:8080`。
Linux 系统(Ubuntu/CentOS)
方法1:通过官方仓库安装(推荐)
# Ubuntu/Debian
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \https://pkg.jenkins.io/debian-stable binary/ | sudo tee \/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins
# CentOS/RHEL
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-2023.key
sudo yum install jenkins
方法2:直接运行 WAR 包(通用)
# 下载最新 WAR 包
wget https://get.jenkins.io/war-stable/latest/jenkins.war# 运行(默认端口 8080)
java -jar jenkins.war --httpPort=9090 # 可自定义端口
启动服务 & 设置开机自启
sudo systemctl start jenkins
sudo systemctl enable jenkins # 开机自启
macOS 系统
# 通过 Homebrew 安装
brew install jenkins-lts# 启动服务
brew services start jenkins-lts
三、初始配置 Jenkins
1. 解锁 Jenkins访问 `http://localhost:8080`(或自定义端口) 从日志获取初始密码:
Linux:见下
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Windows:在安装目录的 `secrets/initialAdminPassword` 文件中查找。
2. 安装推荐插件:选择 **Install suggested plugins**(安装官方推荐插件集)。
3. 创建管理员账户:设置用户名、密码和邮箱(勿跳过!)。
4. 配置实例 URL:保持默认 `http://localhost:8080` 或按需修改。
四、基础安全配置
1. 开启全局安全
-
进入 Manage Jenkins > Security
-
勾选 Enable security → 选择 Logged-in users can do anything
2. 配置代理(可选)
-
若需访问外网下载插件:Manage Jenkins > Plugins > Advanced → 设置 HTTP 代理。
五、安装必备插件
进入 Manage Jenkins > Plugins > Available plugins 搜索安装:
插件名称 | 作用 |
---|---|
Git | 集成 Git 版本控制 |
Pipeline | 核心流水线功能 |
Docker | 构建/推送 Docker 镜像 |
Blue Ocean | 现代化可视化流水线界面 |
Credentials | 管理密钥(如 GitHub Token) |
六、验证安装
1. 创建测试任务:
- 首页点击 New Item → 选择 Freestyle project → 在构建步骤添加 `echo "Hello Jenkins!"`
- 点击 Build Now,查看控制台输出是否成功。
常见问题解决
1. 端口冲突:
- 修改端口:编辑 `/etc/default/jenkins`(Linux)或 Windows 服务配置,更新 `HTTP_PORT=新端口`。2. 插件安装失败:
- 更换更新中心镜像:
Manage Jenkins > Plugin Manager > Advanced** → 将 `Update Site` URL 替换为清华镜像:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json3. Java 版本不兼容:
- 确保使用 Java 11/17!
下一步建议
创建第一个 Pipeline:在项目根目录添加 `Jenkinsfile`,用代码定义构建流程。
集成 Git 仓库:配置 Webhook 实现提交代码自动触发构建。
配置从节点(Agent):扩展构建能力至多台机器。
Jenkins 官方文档是终极指南 →Jenkins User Documentation
五、总结归纳概述
-
Jenkins 是 CI/CD 领域的基石工具。它通过强大的自动化能力和无与伦比的可扩展性,帮助开发团队实现快速、频繁且可靠的软件构建、测试和发布,是现代 DevOps 实践中不可或缺的一环。
-
Jenkins 就像一个不知疲倦的软件工厂机器人,自动完成代码从提交到上线过程中的所有脏活累活,让开发者更高效,软件质量更高。
ps:CI/CD在“Jenkins(二)”介绍