好的阿杰 👍
我来给你写一个详细的 Jenkins 自动化部署入门教程,从零开始带你理解 Jenkins 的作用、安装配置、到最终实现自动化部署(以常见的 Java/SpringBoot 项目为例)。
🛠 Jenkins 自动化部署入门教程
一、Jenkins 是什么?
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD)工具。它能帮助我们:
- 自动化构建代码(Java、Python、Node.js、Go 等)。
- 自动化测试(单元测试、接口测试等)。
- 自动化部署(发布到测试环境/生产环境)。
- 支持插件扩展(几乎任何 CI/CD 需求都有现成插件)。
一句话总结:代码一提交 → Jenkins 自动构建、测试、部署 → 节省人工运维。
二、Jenkins 安装与环境准备
1. 系统要求
- 操作系统:Linux(推荐 Ubuntu / CentOS),也支持 Windows、Mac。
- Java 环境:JDK 8/11(Jenkins 运行依赖 Java)。
# 查看是否安装 Java
java -version
若没有,安装 OpenJDK:
# Ubuntu
sudo apt update
sudo apt install openjdk-11-jdk -y
# CentOS
sudo yum install java-11-openjdk -y
2. 安装 Jenkins
Ubuntu / Debian
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
/etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y
CentOS / RedHat
wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins -y
启动 Jenkins:
systemctl start jenkins
systemctl enable jenkins
3. Web 界面初始化
浏览器访问:
http://你的服务器IP:8080
第一次登录需要输入管理员密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
然后选择:
- 安装推荐插件。
- 创建第一个管理员账号。
三、Jenkins 基本概念
- Job(任务/项目):Jenkins 中的构建单元,比如一个项目的自动化构建配置。
- Pipeline(流水线):代码化的构建过程定义(推荐用
Jenkinsfile
管理)。 - 节点(Node)/代理(Agent):执行任务的机器,可以是本机或远程机器。
- 插件(Plugin):扩展功能,如 Git、Maven、Docker、Kubernetes 等。
四、自动化部署流程(实战)
假设我们有一个 Spring Boot 项目,用 Git 管理。
1. 安装必要插件
在 Jenkins → 系统管理 → 插件管理 中安装:
- Git Plugin(代码拉取)
- Pipeline(流水线)
- Maven Integration plugin(Maven 构建)
- Publish Over SSH(远程部署)
2. 新建一个 Freestyle Job(简单版)
- 新建任务 → 输入名称 → 选择 “自由风格项目”。
- 源码管理 → 选择 Git → 填写仓库地址和凭据。
- 构建触发器 → 勾选 “Poll SCM” 或 “GitHub hook trigger for GITScm polling”。
- Poll SCM: 定时检测代码更新。
- GitHub hook: 代码一提交就触发。
- 构建环境 → 设置 JDK、Maven。
- 构建 → 添加 Maven 构建步骤:
clean package -DskipTests
- 构建后操作 → 上传 jar 包到远程服务器(需要配置 SSH)。
3. 使用 Pipeline(推荐,企业常用)
在 Git 项目根目录创建 Jenkinsfile
:
pipeline {
agent any
tools {
maven 'Maven3' // 在 Jenkins 中配置的 Maven 名称
jdk 'JDK11' // 在 Jenkins 中配置的 JDK 名称
}
stages {
stage('拉取代码') {
steps {
git branch: 'main', url: 'git@github.com:your-repo/project.git'
}
}
stage('编译打包') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('部署到服务器') {
steps {
sh '''
scp target/project-1.0.jar user@remote:/home/project/
ssh user@remote "pkill -f project-1.0.jar || true"
ssh user@remote "nohup java -jar /home/project/project-1.0.jar > log.txt 2>&1 &"
'''
}
}
}
}
这样,当你在 Git 提交代码后,Jenkins 会自动完成:
- 拉取代码
- 编译打包
- 部署到服务器并重启应用
五、进阶玩法
- 结合 Docker:打包成镜像,推送到 Harbor/DockerHub,远程服务器
docker run
启动。 - 多环境部署:区分 dev/test/prod 环境,用参数化构建。
- 自动化测试:在流水线中加入单元测试、接口测试。
- 前端项目部署:npm build → 上传 dist 到 Nginx。
六、常见问题
- 权限不足
- 使用 SSH 部署时,要配置免密登录(
ssh-copy-id
)。
- 使用 SSH 部署时,要配置免密登录(
- 中文乱码
- 修改 Jenkins 系统环境变量
JAVA_OPTS="-Dfile.encoding=UTF-8"
.
- 修改 Jenkins 系统环境变量
- 构建太慢
- 使用 Maven 私服(如 Nexus),缓存依赖。
七、学习建议
- 第一步:先用 Freestyle 项目跑通一个 Spring Boot 项目的自动部署。
- 第二步:升级为 Pipeline,写 Jenkinsfile 管理流程。
- 第三步:加入 Docker/K8s,做到自动化 + 容器化。
- 第四步:集成测试、灰度发布、滚动升级。
好嘞阿杰 👍 那我就给你准备一个 完整可运行的 Jenkins + Spring Boot 自动化部署示例,你可以直接用在自己的项目里。
🚀 Jenkins + Spring Boot 自动化部署完整示例
假设条件:
- 你的 Spring Boot 项目放在 GitHub/Gitee 上(main 分支)。
- 目标服务器(部署机器)是 Linux,已安装 JDK。
- Jenkins 部署在一台服务器上,并且能通过 SSH 登录目标服务器。
一、准备工作
1. 在部署服务器上创建目录
mkdir -p /home/project
2. 配置 Jenkins 与目标服务器 SSH 免密
在 Jenkins 服务器执行:
ssh-copy-id user@remote-server-ip
(这样 Jenkins 在执行 ssh
/scp
时就不需要输入密码了)
3. 在 Jenkins 中配置工具
- 系统管理 → 全局工具配置
- 配置 JDK(如:JDK11)
- 配置 Maven(如:Maven3)
二、在 Spring Boot 项目中添加 Jenkinsfile
在项目根目录新建 Jenkinsfile
,内容如下 👇
pipeline {
agent any
tools {
maven 'Maven3' // Jenkins 全局工具配置里 Maven 的名字
jdk 'JDK11' // Jenkins 全局工具配置里 JDK 的名字
}
environment {
DEPLOY_SERVER = "user@remote-server-ip"
DEPLOY_PATH = "/home/project"
APP_NAME = "springboot-demo"
}
stages {
stage('拉取代码') {
steps {
git branch: 'main', url: 'git@github.com:your-repo/springboot-demo.git'
}
}
stage('编译打包') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('上传到服务器') {
steps {
sh '''
scp target/${APP_NAME}-0.0.1-SNAPSHOT.jar $DEPLOY_SERVER:$DEPLOY_PATH/
'''
}
}
stage('部署启动') {
steps {
sh '''
ssh $DEPLOY_SERVER "
pkill -f ${APP_NAME}-0.0.1-SNAPSHOT.jar || true
nohup java -jar $DEPLOY_PATH/${APP_NAME}-0.0.1-SNAPSHOT.jar > $DEPLOY_PATH/app.log 2>&1 &
"
'''
}
}
}
}
三、Jenkins 配置 Job(流水线)
- 打开 Jenkins → 新建任务
- 选择 Pipeline(流水线项目)。
- 配置 流水线定义
- 选择
Pipeline script from SCM
。 - SCM 选择 Git,填入仓库地址和凭据。
- 脚本路径填
Jenkinsfile
。
- 选择
- 保存并构建。
四、部署流程演示
- 你在本地修改 Spring Boot 项目代码,并 push 到
main
分支。 - Jenkins 自动触发流水线(或你点“立即构建”)。
- 流水线执行:
- 拉取代码
- Maven 编译打包
- 上传 Jar 包到目标服务器
- 停止旧进程 & 启动新进程
- 访问目标服务器:
http://remote-server-ip:8080
你的新版本 Spring Boot 项目就跑起来了 🎉
五、可选增强
- 灰度/滚动发布
可以不直接pkill
,而是用 Nginx 代理多个实例,逐步替换。 - Docker 化
用 Jenkins 打 Docker 镜像,推送到 Harbor/DockerHub,再docker run
部署。 - 参数化构建
在 Jenkins Job 里加参数(选择部署 dev/test/prod 环境)。
发表回复