Jenkins 详解与实战:从安装到部署,打造你的自动化流水线
Jenkins是一款开源的持续集成/持续交付(CI/CD)工具,用于自动化构建、测试和部署流程。它支持多种插件,能与各种技术栈集成,是DevOps的重要工具。本文介绍了Jenkins的核心功能、安装方法(以Ubuntu为例)、基础配置步骤,并提供了SpringBoot应用的CI/CD实战案例,包括Shell脚本和Docker两种部署方式。文章还涵盖了GitHub Webhook自动触发构建、Jen
一、什么是 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 plugin
- Docker plugin
- Pipeline
- GitHub Integration
- Credentials Binding
- Email Extension
- Blue 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.git
- Credentials:添加 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-url>/github-webhook/ - Content type:
application/json - Events:
Just the push event
- Payload URL:
- Jenkins Pipeline 设置为“GitHub hook trigger for GITScm polling”
- 每次 Push 到 GitHub 主分支,Jenkins 即可自动触发构建
八、Jenkins 最佳实践建议
|
类别 |
建议 |
|
权限管理 |
使用 Role-based Authorization Strategy 插件进行权限控制 |
|
多人协作 |
创建共享用户组、限制敏感操作权限 |
|
日志审计 |
定期备份 Jenkins Home 目录 |
|
分布式构建 |
配置 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 实现自动化部署》
🌐 学习网站
🧩 插件推荐
- Git
- Docker
- Pipeline
- GitHub Integration
- Blue Ocean
- Email Extension
- Credentials Binding
- SSH Pipeline Steps
十二、总结
Jenkins 是一款强大的 CI/CD 工具,掌握它可以大幅提升软件开发效率和部署可靠性。从安装配置、流水线编写,到结合 Git、Docker 实现自动化构建与部署,你已经掌握了 Jenkins 的核心技能。
更多推荐




所有评论(0)