好,那我给你整理一份超详细的 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 安装

  1. 从 Jenkins 官网 下载 jenkins.war
  2. 启动:java -jar jenkins.war --httpPort=8080
  3. 浏览器访问 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)

  1. 新建任务
    • 选择 Freestyle project
    • 输入任务名(如 java-demo-deploy
  2. 源码管理
    • 选择 Git
    • 填写仓库地址(如 https://github.com/user/project.git
    • 凭据选择刚才配置的 git-credentials
  3. 构建触发器
    • Poll SCM(定时检查代码变动)H/5 * * * * # 每 5 分钟检查一次
    • 或 GitHub Webhook(实时触发)
  4. 构建环境
    • 勾选 Delete workspace before build starts(防止缓存影响)
  5. 构建
    • 选择 Invoke top-level Maven targets
    • Goals:clean package -DskipTests
  6. 构建后操作
    • 添加 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 &
  7. 保存并构建
    • 点击 立即构建
    • 在 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. 自动化部署流程总结

  1. 开发提交代码 → GitHub/GitLab
  2. Jenkins 监听(Webhook/定时)
  3. 自动拉取最新代码
  4. 编译 & 打包(Maven、npm、gradle 等)
  5. 测试 & 代码检查(可选)
  6. 打包产物上传到服务器
  7. 执行部署脚本(重启服务)

7. 常见问题

问题原因解决方法
Process terminated内存不足在 Manage Jenkins → Configure System → MAVEN_OPTS 增加 -Xmx1024m
SSH 上传失败密钥/权限问题确认服务器已添加 Jenkins 公钥
Webhook 不触发防火墙/未配置确保 Jenkins 可被 GitHub/GitLab 访问
中文乱码Jenkins 默认 UTF-8 设置缺失在系统环境变量加 -Dfile.encoding=UTF-8