一、什么是 Jenkins?
Jenkins 是一个开源的持续集成和持续交付(CI/CD)工具,广泛用于软件开发中的自动化构建、测试和部署流程。它支持数百个插件,几乎可以与所有技术栈无缝集成,是 DevOps 流程中不可或缺的一环。
核心功能:
功能
描述
持续集成(CI)
自动化代码合并后的构建和测试流程
持续交付 / 部署(CD)
自动将代码部署到测试、预发布或生产环境
任务调度
支持定时任务、触发式任务(如 Git 提交后自动构建)
插件生态丰富
支持 Git、Docker、Kubernetes、SonarQube 等主流工具
二、Jenkins 的优势
✅ 开源免费,社区活跃✅ 跨平台运行(Windows、Linux、macOS)✅ 可视化界面,操作简单✅ 支持多种 SCM(如 GitHub、GitLab、SVN)✅ 易于扩展,插件生态强大✅ 支持分布式构建(多节点并行)
三、Jenkins 安装指南(以 Ubuntu 为例)
1. 安装 Java 环境(Jenkins 依赖)
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
Jenkins 推荐使用 Java 11 或更高版本。
2. 添加 Jenkins 仓库并安装
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.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 -y
3. 启动 Jenkins 服务
sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins
4. 访问 Jenkins Web 界面
打开浏览器访问:
http://<服务器IP>:8080
首次登录时需要查看管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
按照提示安装推荐插件,并创建管理员账户。
四、Jenkins 基础配置
1. 安装常用插件(建议)
进入 Jenkins → Manage Jenkins → Plugins → Available plugins
搜索并安装以下插件:
Git pluginDocker pluginPipelineGitHub IntegrationCredentials BindingEmail ExtensionBlue Ocean(可视化流水线编辑器)
2. 配置全局工具
进入 Manage Jenkins → Global Tool Configuration
JDK:添加本地 JDK 或通过 Jenkins 下载Maven:添加 Maven 版本NodeJS:如有前端项目可配置 Node.js 版本Git:确保已安装 Git 并配置路径
五、Jenkins 实战:创建第一个 CI/CD 流水线
场景说明:部署一个 Spring Boot 应用
技术栈:
Spring Boot(Java)Maven 构建Git 仓库托管(GitHub)使用 Jenkins Pipeline 自动化构建和部署部署方式:Shell 脚本重启应用
1. 准备工作
(1) 将 Spring Boot 项目推送到 GitHub
确保 pom.xml 存在且项目可通过 mvn package 编译打包。
(2) 在服务器上准备好部署目录
mkdir -p /opt/myapp
cd /opt/myapp
touch restart.sh
chmod +x restart.sh
(3) restart.sh 内容示例:
#!/bin/bash
APP_NAME=myapp.jar
PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
echo "$APP_NAME is not running."
else
echo "Stopping $APP_NAME with PID: $PID"
kill -9 $PID
fi
cp /home/jenkins/workspace/myapp/target/*.jar /opt/myapp/
nohup java -jar /opt/myapp/*.jar > app.log &
2. 创建 Jenkins Pipeline 任务
(1) 新建任务 → 输入名称 → 选择 “Pipeline”
(2) 配置 Git 仓库地址
Repository URL:https://github.com/yourname/yourrepo.gitCredentials:添加 GitHub 账号凭据(可在 Jenkins 中配置)
(3) Pipeline 脚本内容如下:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/yourname/yourrepo.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
sh '/opt/myapp/restart.sh'
}
}
}
post {
success {
echo 'Build and deploy succeeded!'
}
failure {
echo 'Build or deploy failed.'
}
}
}
(4) 保存并点击“立即构建”
六、进阶实战:结合 Docker 部署应用
场景升级:使用 Jenkins 构建镜像并部署到 Docker 容器
修改 Jenkinsfile:
pipeline {
agent any
environment {
IMAGE_NAME = "my-springboot-app"
CONTAINER_NAME = "app-container"
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/yourname/yourrepo.git'
}
}
stage('Build JAR') {
steps {
sh 'mvn clean package'
}
}
stage('Build Docker Image') {
steps {
sh """
docker build -t ${IMAGE_NAME} .
"""
}
}
stage('Stop & Remove Old Container') {
steps {
sh """
docker stop ${CONTAINER_NAME} || true
docker rm ${CONTAINER_NAME} || true
"""
}
}
stage('Run New Container') {
steps {
sh """
docker run -d --name ${CONTAINER_NAME} -p 8080:8080 ${IMAGE_NAME}
"""
}
}
}
}
对应的 Dockerfile 示例:
FROM openjdk:17-jdk-slim
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
七、Jenkins + GitHub Webhook 自动触发构建
步骤:
Jenkins 中安装 GitHub Plugin在 GitHub 项目中设置 Webhook:
Payload URL: http://
Jenkins Pipeline 设置为“GitHub hook trigger for GITScm polling”每次 Push 到 GitHub 主分支,Jenkins 即可自动触发构建
八、Jenkins 最佳实践建议
类别
建议
权限管理
使用 Role-based Authorization Strategy 插件进行权限控制
多人协作
创建共享用户组、限制敏感操作权限
日志审计
定期备份 Jenkins Home 目录 /var/lib/jenkins
分布式构建
配置 Jenkins Agent(节点),提升并发效率
安全加固
使用 HTTPS、定期更新插件、关闭匿名访问
CI/CD 流水线
使用 Declarative Pipeline 语法统一规范
通知机制
配置邮件通知、Slack、企业微信等通知渠道
九、Jenkins 部署实战案例汇总
项目类型
部署方式
Jenkins Pipeline 示例
Spring Boot
Maven + Shell/Docker
✔️ 已展示
React/Vue 前端
npm + Nginx
✔️ 可通过 Node.js 插件实现
Python Flask 应用
pip + Gunicorn + Docker
✔️ 可自定义 Dockerfile
微服务架构
Jenkins + Kubernetes
✔️ 使用 Kubernetes 插件
移动端 App
Jenkins + Android SDK/iOS 打包工具
✔️ 支持 Gradle/Xcode 构建
十、学习路线图(建议)
阶段
学习内容
目标
第1阶段
Jenkins 安装、基础配置
熟悉 Jenkins UI 和基本操作
第2阶段
创建 Job、Shell 脚本执行
能手动执行构建任务
第3阶段
Pipeline 脚本编写
掌握声明式流水线写法
第4阶段
Git 集成、Webhook 触发
实现自动构建
第5阶段
Docker 集成
构建镜像并部署容器
第6阶段
邮件通知、权限管理
提升安全性和可用性
第7阶段
与 Kubernetes、SonarQube 等集成
进阶云原生 CI/CD
十一、推荐学习资源
📘 官方文档与书籍
Jenkins User Documentation《Jenkins 2.x 实践指南》《持续交付:使用 Jenkins 2 实现自动化部署》
🌐 学习网站
Jenkins 中文社区 - Jenkins 中文社区https://github.com/marketplace?type=actions
🧩 插件推荐
GitDockerPipelineGitHub IntegrationBlue OceanEmail ExtensionCredentials BindingSSH Pipeline Steps
十二、总结
Jenkins 是一款强大的 CI/CD 工具,掌握它可以大幅提升软件开发效率和部署可靠性。从安装配置、流水线编写,到结合 Git、Docker 实现自动化构建与部署,你已经掌握了 Jenkins 的核心技能。