【Jenkins从入门到精通:全面指南与实战教程】
Jenkins作为功能强大的自动化服务器,能够显著提升软件开发和交付的效率。通过本文的指导,您可以完成从安装到配置的整个过程,并创建自己的自动化流水线。随着对Jenkins的深入了解,您可以探索更多高级功能,如分布式构建与Docker和Kubernetes集成以及复杂的Pipeline设计,进一步优化您的CI/CD流程。无论您是开发人员、测试工程师还是DevOps专家,掌握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会提示安装插件。建议先更换国内镜像源以提高下载速度。
更换镜像源方法:
-
修改
/var/lib/jenkins/hudson.model.UpdateCenter.xml文件 -
将URL改为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json -
重启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. 常见问题与解决方案
-
端口冲突:修改
/etc/sysconfig/jenkins中的HTTP_PORT变量,更改默认端口 -
插件安装失败:检查网络连接,或更换国内镜像源
-
权限问题:确保Jenkins用户有访问相关文件和目录的权限
-
Java环境问题:确保JAVA_HOME环境变量正确配置
9. 总结
Jenkins作为功能强大的自动化服务器,能够显著提升软件开发和交付的效率。通过本文的指导,您可以完成从安装到配置的整个过程,并创建自己的自动化流水线。
随着对Jenkins的深入了解,您可以探索更多高级功能,如分布式构建、与Docker和Kubernetes集成以及复杂的Pipeline设计,进一步优化您的CI/CD流程。
无论您是开发人员、测试工程师还是DevOps专家,掌握Jenkins都将为您的职业发展带来显著优势,帮助您构建更可靠、高效的软件交付流程。
常见问题与解决方法
1. 我忘记了密码,而且已经过了初始设置阶段?
如果你已经创建过用户但忘记了密码,可以这样做:
方法一:使用 admin 账户重置
如果你还记得 admin账户的密码,可以用它登录,然后在 管理用户 -> 选择对应用户 -> 设置新密码。
方法二:修改配置文件(如果 admin 密码也忘了)
停止 Jenkins 服务。
找到 Jenkins 的配置文件 config.xml(通常位于 /var/lib/jenkins/config.xml)。
编辑此文件,将 <useSecurity>true</useSecurity>改为 false,并删除 <authorizationStrategy>...</authorizationStrategy>和 <securityRealm>...</securityRealm>这两个节点之间的全部内容。
启动 Jenkins 服务。此时访问 Jenkins 将不再需要登录。
进入 管理用户,重新设置 admin或其他用户的密码。
最后,务必在 系统管理 -> 全局安全配置 中重新启用安全设置。
更多推荐
所有评论(0)