跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Jenkins 自动化部署实战指南:从安装到流水线构建

Jenkins 作为 DevOps 核心工具,支持代码构建、测试及部署全流程自动化。本指南基于 Linux 环境演示 Jenkins 的安装配置流程,涵盖 Java 环境准备、服务启动、防火墙设置及初始化步骤。重点讲解 Pipeline 流水线的声明式语法,通过实际案例展示如何编写 Jenkinsfile 实现拉取代码、Maven 构建及部署操作。同时提供国内镜像源优化方案及常见故障排查方法,帮助开发者快速搭建高效的 CI/CD 体系。

ApiHolic发布于 2026/1/18更新于 2026/9/1066 浏览
Jenkins 自动化部署实战指南:从安装到流水线构建

Jenkins 作为开源的自动化服务器,是 DevOps 核心工具之一,能够实现代码构建、测试、部署的全流程自动化。本指南基于 Linux 系统(CentOS 7/8、Ubuntu 20.04/22.04),从环境准备、安装部署、基础配置到流水线(Pipeline)构建,带你掌握 Jenkins 的核心使用方法。

一、环境准备

1. 系统要求
  • 操作系统:Linux(CentOS 7+/Ubuntu 20.04+),推荐 2 核 4G 以上配置
  • 依赖:Java(Jenkins 2.357+ 要求 Java 11,推荐 OpenJDK 11)
  • 网络:能访问外网(或配置内网源),开放 8080 端口(Jenkins 默认端口)
2. 安装 Java 环境

Jenkins 基于 Java 开发,必须先安装并配置 Java 环境。以下是 CentOS 和 Ubuntu 的安装方式:

CentOS 系统
# 安装 OpenJDK 11
yum install -y java-11-openjdk java-11-openjdk-devel

# 验证 Java 版本
java -version
# 输出类似:openjdk version "11.0.XX" 即为成功
Ubuntu 系统
# 更新源
apt update

# 安装 OpenJDK 11
apt install -y openjdk-11-jdk openjdk-11-jre

# 验证 Java 版本
java -version

二、Jenkins 安装部署

1. 安装 Jenkins

推荐通过官方源安装,保证版本最新且稳定。

CentOS 系统
# 安装依赖
yum install -y wget

# 添加 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

# 安装 Jenkins
yum install -y jenkins

# 启动 Jenkins 服务
systemctl start jenkins

# 设置开机自启
systemctl enable jenkins

# 查看服务状态
systemctl status jenkins
Ubuntu 系统
# 安装依赖
apt install -y wget gnupg

# 添加 Jenkins 官方 GPG 密钥
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.gpg

# 添加 Jenkins 源
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.gpg] https://pkg.jenkins.io/debian-stable binary/" |  /etc/apt/sources.list.d/jenkins.list > /dev/null


apt update
apt install -y jenkins


systemctl start jenkins
systemctl  jenkins
systemctl status jenkins
tee
# 更新源并安装 Jenkins
# 启动并设置自启
enable
2. 防火墙与端口配置

Jenkins 默认监听 8080 端口,需开放端口权限。

CentOS 系统(firewalld)
# 开放 8080 端口
firewall-cmd --add-port=8080/tcp --permanent

# 重载防火墙规则
firewall-cmd --reload

# 查看开放端口
firewall-cmd --list-ports
Ubuntu 系统(ufw)
# 开放 8080 端口
ufw allow 8080/tcp

# 启用防火墙(若未启用)
ufw enable

# 查看规则
ufw status
3. 初始化 Jenkins
步骤 1:访问 Jenkins 页面

在浏览器中输入 http://服务器 IP:8080,首次访问会要求输入初始管理员密码。

(图:Jenkins 初始密码输入界面)

步骤 2:获取初始密码

方式一:查看 Jenkins 启动日志。

(图:Jenkins 启动日志中的密码信息)

方式二:执行以下命令获取密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

将输出的一串随机字符复制到页面输入框,点击'继续'。

步骤 3:安装插件
  • 推荐选择'安装推荐的插件',等待插件安装完成(网络慢可配置国内镜像源,见文末优化)。
  • 插件安装完成后,创建第一个管理员用户(输入用户名、密码、邮箱)。
  • 配置 Jenkins URL(默认即可),点击'开始使用 Jenkins',完成初始化。

(图:插件安装完成界面) (图:管理员用户创建界面) (图:Jenkins 首页欢迎界面)

三、Jenkins 流水线(Pipeline)实战

Pipeline 是 Jenkins 的核心特性,通过代码(Jenkinsfile)定义自动化流程,支持持续集成/持续部署(CI/CD)。

1. 核心概念
  • Jenkinsfile:定义 Pipeline 的文本文件,支持 Declarative(声明式,推荐)和 Scripted(脚本式)两种语法。
  • Agent:指定流水线运行的节点(如本机 agent any)。
  • Stage:流水线的阶段(如拉取代码、构建、测试、部署)。
  • Step:阶段内的具体操作(如执行 shell 命令、调用插件)。
2. 实战:构建一个 Java 项目的 Pipeline
前提条件
  • 安装 Git 插件(已包含在推荐插件中)。
  • 服务器安装 Git:yum install git(CentOS)/ apt install git(Ubuntu)。
  • 准备一个 Java 项目(如 GitHub/Gitee 上的 Maven 项目)。
步骤 1:创建 Pipeline 任务
  1. 点击 Jenkins 首页'新建任务',输入任务名称(如 Java-Project-Pipeline)。
  2. 选择'流水线',点击'确定'。

(图:新建流水线任务界面)

步骤 2:配置 Pipeline
  1. 在'流水线'配置区域,选择'Pipeline 脚本来自 SCM'(推荐,将 Jenkinsfile 托管到代码仓库),或直接在'脚本'框中编写(测试用)。
  2. 若选择 SCM:
    • 选择 Git,输入代码仓库地址(如 https://gitee.com/xxx/xxx-project.git)。
    • 配置凭证(私有仓库需添加用户名/密码或 SSH 密钥)。
    • 指定分支(如 */main)。
    • 指定 Jenkinsfile 路径(默认 Jenkinsfile,若在仓库根目录可直接使用)。
  3. 若直接编写脚本,复制以下声明式 Jenkinsfile 到'脚本'框:

(图:Jenkinsfile 脚本编辑界面)

pipeline {
    // 任意可用节点运行
    agent any
    
    // 环境变量
    environment {
        // 项目构建目录
        PROJECT_DIR = '/var/jenkins/workspace/Java-Project'
    }
    
    // 构建触发器(可选:定时构建、代码提交触发)
    triggers {
        // 每分钟检查一次代码更新
        pollSCM('* * * * *')
    }
    
    // 流水线阶段
    stages {
        stage("Clean Workspace") {
            steps {
                script {
                    // 清空当前工作目录
                    deleteDir()
                }
            }
        }
        stage('拉取代码') {
            steps {
                echo '开始拉取代码...'
                // 拉取代码(若配置 SCM 则无需此步骤,此处为脚本式示例)
                // git url: 'https://gitee.com/xxx/xxx-java-project.git', branch: 'main'
                sh "git clone https://gitee.com/dromara/payment-spring-boot.git"
            }
        }
        stage('代码构建') {
            steps {
                echo '开始构建项目...'
                // 执行 Maven 构建(需安装 Maven 插件或服务器安装 Maven)
                sh 'cd payment-spring-boot ; mvn clean package -DskipTests'
            }
        }
        stage('部署到测试环境') {
            // 仅在 main 分支执行
            when {
                branch 'main'
            }
            steps {
                echo '部署到测试环境...'
                // 示例:复制 jar 包到测试服务器
                sh 'cp target/*.jar /opt/test-server/'
                // 重启测试服务
                sh 'systemctl restart test-server'
            }
        }
    }
    
    // 流水线结束后操作
    post {
        success {
            echo '流水线执行成功!'
        }
        failure {
            echo '流水线执行失败!'
            // 可选:发送邮件通知
            mail to: '[email protected]', subject: 'Pipeline 执行失败', body: '项目构建失败,请检查!'
        }
    }
}
步骤 3:运行 Pipeline

点击'保存'后,点击'立即构建',在任务页面可查看流水线执行进度:

  • 点击'阶段视图',直观查看各阶段执行状态。
  • 点击各阶段可查看日志(如构建失败,查看日志定位问题)。
3. Jenkinsfile 核心语法说明
语法说明
agent any在任意可用节点运行流水线
stage('名称')定义阶段
sh '命令'执行 shell 命令
git url: '地址', branch: '分支'拉取 Git 代码
environment定义环境变量
when条件判断(如分支、状态)
post流水线/阶段结束后的操作(成功/失败/始终)

四、Jenkins 优化与常见问题

1. 配置国内插件镜像源(解决插件安装慢)

修改 Jenkins 插件源为清华大学镜像:

# 进入 Jenkins 插件配置目录
cd /var/lib/jenkins/updates

# 备份原配置
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

# 重启 Jenkins
systemctl restart jenkins

或者在 Web 界面 Advanced settings 地址改为:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json

2. 常见问题解决
  • Jenkins 启动失败:检查 Java 版本是否符合要求(Jenkins 2.357+ 需 Java 11),查看日志:journalctl -u jenkins。
  • 插件安装失败:配置国内镜像源,或手动下载插件(hpi 文件)上传到 /var/lib/jenkins/plugins 目录,重启 Jenkins。
  • Pipeline 拉取代码失败:检查 Git 地址、凭证是否正确,服务器能否访问代码仓库(ping github.com 测试)。
  • Maven 构建失败:安装 Maven(yum install maven),或配置 Maven 国内镜像(修改 settings.xml)。

五、总结

本文从 Linux 环境下 Jenkins 的安装部署入手,完成了初始化配置,并通过实战案例讲解了 Pipeline 流水线的构建流程。Jenkins 的核心价值在于自动化,通过 Pipeline 可灵活定义 CI/CD 流程,适配不同语言(Java、Python、Go 等)和场景(前端构建、后端部署、容器化发布等)。

后续可进一步学习:

  • 配置 Jenkins 节点(分布式构建)。
  • 集成 Docker 实现容器化部署。
  • 结合 Kubernetes 实现动态节点调度。
  • 使用 WebHook 实现代码提交自动触发构建。

掌握上述流程后,你可以快速搭建高效的自动化研发体系。

目录

  1. 一、环境准备
  2. 1. 系统要求
  3. 2. 安装 Java 环境
  4. CentOS 系统
  5. 安装 OpenJDK 11
  6. 验证 Java 版本
  7. 输出类似:openjdk version "11.0.XX" 即为成功
  8. Ubuntu 系统
  9. 更新源
  10. 安装 OpenJDK 11
  11. 验证 Java 版本
  12. 二、Jenkins 安装部署
  13. 1. 安装 Jenkins
  14. CentOS 系统
  15. 安装依赖
  16. 添加 Jenkins 官方源
  17. 安装 Jenkins
  18. 启动 Jenkins 服务
  19. 设置开机自启
  20. 查看服务状态
  21. Ubuntu 系统
  22. 安装依赖
  23. 添加 Jenkins 官方 GPG 密钥
  24. 添加 Jenkins 源
  25. 更新源并安装 Jenkins
  26. 启动并设置自启
  27. 2. 防火墙与端口配置
  28. CentOS 系统(firewalld)
  29. 开放 8080 端口
  30. 重载防火墙规则
  31. 查看开放端口
  32. Ubuntu 系统(ufw)
  33. 开放 8080 端口
  34. 启用防火墙(若未启用)
  35. 查看规则
  36. 3. 初始化 Jenkins
  37. 步骤 1:访问 Jenkins 页面
  38. 步骤 2:获取初始密码
  39. 步骤 3:安装插件
  40. 三、Jenkins 流水线(Pipeline)实战
  41. 1. 核心概念
  42. 2. 实战:构建一个 Java 项目的 Pipeline
  43. 前提条件
  44. 步骤 1:创建 Pipeline 任务
  45. 步骤 2:配置 Pipeline
  46. 步骤 3:运行 Pipeline
  47. 3. Jenkinsfile 核心语法说明
  48. 四、Jenkins 优化与常见问题
  49. 1. 配置国内插件镜像源(解决插件安装慢)
  50. 进入 Jenkins 插件配置目录
  51. 备份原配置
  52. 重启 Jenkins
  53. 2. 常见问题解决
  54. 五、总结

更多推荐文章

查看全部
  • GraphRAG 全栈技术最新进展:全面解析与应用
  • 大模型微调实战:基于 LLaMA-Factory 的 LoRA 微调指南
  • 用 Python 把 CSV 导进 Neo4j
  • 基于 LangChain 实现数据库问答机器人
  • 青少年机器人编程系统化学习路径:从机械启蒙到人工智能
  • Rust 异步编程实战:构建高性能网络应用
  • 基于 Leaflet-Trackplayer 的高速公路轨迹 WebGIS 可视化实战
  • SpringMVC 核心原理与实战应用详解
  • AI 时代,为何“人人都是产品经理”终于落地?
  • 多模态模型开发实战:文本、图像与语音融合应用
  • Coze(扣子)全解析:100 个落地用途与发布使用指南
  • PyTorch CUDA v2.7 环境支持 Stable Diffusion 等多种模型架构
  • macOS 手柄配置指南:适配 Steam 游戏
  • Stable Diffusion v1.5 Archive 跨平台效果一致性复现指南
  • Python 数据分析入门:理解集中趋势与离散程度
  • LangGraph:构建具有状态与循环的 AI Agent
  • 栈的压入弹出序列判断算法详解
  • C++ 仿函数深度解析:状态管理与 STL 实践
  • Qwen-Image-2512 模型详解:ComfyUI 与 WebUI 部署实战
  • 基于 Uptime Kuma 与内网穿透实现远程服务器监控

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online