好,那我给你整理一份超详细的 Jenkins 自动化部署入门教程,从安装 → 配置 → 创建任务 → 自动构建 → 部署一步步带你走,保证你看完就能自己搭一个可用的自动化部署环境。
我会用常见的 Java Maven 项目部署到服务器 作为示例,其他语言(Node、Python、Go)只是换构建命令而已。
1. Jenkins 是什么?
Jenkins 是一个开源的 持续集成(CI)+ 持续部署(CD) 工具,可以帮你:
- 自动拉取 Git 代码
- 自动构建(编译、打包)
- 自动运行测试
- 自动部署到服务器(本地/远程)
- 支持插件扩展(Docker、K8s、代码扫描、邮件通知等)
简单理解:
以前部署需要手动:
git pull → mvn package → scp 上传 → 重启服务
Jenkins 帮你全自动化,甚至在你提交代码的一瞬间就开始部署。
2. 安装 Jenkins
2.1 环境准备
- Java 环境(JDK 8 或 11 推荐)
java -version
- Git 环境
git --version
2.2 安装(Linux)
# 添加 Jenkins 官方源
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-2023.key
# 安装
yum install jenkins java-11-openjdk -y
# 启动
systemctl start jenkins
systemctl enable jenkins
访问 Jenkins
http://服务器IP:8080
首次登录需要管理员密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
2.3 Windows 安装
- 从 Jenkins 官网 下载
jenkins.war
- 启动:
java -jar jenkins.war --httpPort=8080
- 浏览器访问
http://localhost:8080
3. 基本配置
3.1 安装插件
进入 Manage Jenkins → Manage Plugins,安装:
- Git plugin(拉取代码)
- Maven Integration plugin(Maven 项目)
- SSH plugin(远程部署)
- Pipeline(流水线脚本)
- Blue Ocean(可视化界面,可选)
3.2 配置 Maven & JDK
Manage Jenkins → Global Tool Configuration
- JDK:选择已有 JDK 或添加 JDK 路径
- Maven:配置 Maven 安装路径(或让 Jenkins 自动安装)
3.3 配置 Git 凭据
Manage Jenkins → Credentials → System → Global credentials
- 添加:
- 类型:
Username with password
(或 SSH Key) - ID:
git-credentials
- 用户名、密码:Git 仓库账号密码
- 类型:
4. 创建第一个任务(Freestyle)
- 新建任务
- 选择 Freestyle project
- 输入任务名(如
java-demo-deploy
)
- 源码管理
- 选择
Git
- 填写仓库地址(如
https://github.com/user/project.git
) - 凭据选择刚才配置的
git-credentials
- 选择
- 构建触发器
Poll SCM
(定时检查代码变动)H/5 * * * * # 每 5 分钟检查一次
- 或 GitHub Webhook(实时触发)
- 构建环境
- 勾选
Delete workspace before build starts
(防止缓存影响)
- 勾选
- 构建
- 选择 Invoke top-level Maven targets
- Goals:
clean package -DskipTests
- 构建后操作
- 添加 Send files over SSH
- SSH Server:配置服务器 IP、用户名、密码/密钥
- 传输文件路径:
target/myapp.jar
- 远程路径:
/home/project/
- 添加执行远程命令:
pkill -f myapp.jar nohup java -jar /home/project/myapp.jar > app.log 2>&1 &
- 添加 Send files over SSH
- 保存并构建
- 点击 立即构建
- 在 Console Output 查看日志
5. 使用 Jenkins Pipeline(脚本化)
如果想要可读性更高、可重复迁移的配置,可以用 Jenkinsfile
:
pipeline {
agent any
tools {
maven 'Maven3'
jdk 'JDK11'
}
stages {
stage('拉取代码') {
steps {
git branch: 'main', url: 'https://github.com/user/project.git'
}
}
stage('构建') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('部署到服务器') {
steps {
sshPublisher(publishers: [
sshPublisherDesc(
configName: 'my-server',
transfers: [
sshTransfer(
sourceFiles: 'target/myapp.jar',
remoteDirectory: '/home/project/',
execCommand: '''
pkill -f myapp.jar || true
nohup java -jar /home/project/myapp.jar > app.log 2>&1 &
'''
)
]
)
])
}
}
}
}
- 这样项目里放一个
Jenkinsfile
,Jenkins 会按这个脚本执行。 - 方便迁移和版本管理。
6. 自动化部署流程总结
- 开发提交代码 → GitHub/GitLab
- Jenkins 监听(Webhook/定时)
- 自动拉取最新代码
- 编译 & 打包(Maven、npm、gradle 等)
- 测试 & 代码检查(可选)
- 打包产物上传到服务器
- 执行部署脚本(重启服务)
7. 常见问题
问题 | 原因 | 解决方法 |
---|---|---|
Process terminated | 内存不足 | 在 Manage Jenkins → Configure System → MAVEN_OPTS 增加 -Xmx1024m |
SSH 上传失败 | 密钥/权限问题 | 确认服务器已添加 Jenkins 公钥 |
Webhook 不触发 | 防火墙/未配置 | 确保 Jenkins 可被 GitHub/GitLab 访问 |
中文乱码 | Jenkins 默认 UTF-8 设置缺失 | 在系统环境变量加 -Dfile.encoding=UTF-8 |
发表回复