使用Jenkins进行自动化部署和持续集成-Java 项目实战(超详细)
前言在现代软件开发流程中持续集成 CI、持续交付 CD已经成为企业级项目开发、运维的核心标准。Jenkins 作为开源、可扩展的自动化构建平台能够打通代码拉取、编译打包、镜像制作、项目部署全流程结合 GitLab、Maven、Docker、K8s 等技术可实现 Java 项目一键自动化上线极大提升开发与运维效率。本文基于实战项目jpress完整讲解 Jenkins 从环境搭建、基础配置到传统部署、Blue Ocean 可视化部署、Docker 容器化部署、Docker-Compose 编排、Pipeline 流水线部署的全流程涵盖 CI/CD 核心架构、插件配置、认证集成、脚本编写等实战要点。须知学习本文前需提前部署完成GitLab 代码仓库环境、Docker 私有镜像仓库环境Jenkins 部署过程会依赖这两个环境项目源码下载一、Jenkins 安装与基础环境准备1.1 Jenkins 核心介绍Jenkins 是一款开源、跨平台、可扩展的持续集成 持续交付CI/CDWeb 平台支持软件代码的编译、打包、测试、部署全流程自动化适配几乎所有开发语言与项目类型。官网https://jenkins.io/官方文档https://jenkins.io/doc/1.2 安装硬件 软件要求硬件最低 256MB 内存推荐 512MB 以上硬盘≥1GBJDK 环境Jenkins 2.357 版本强制要求Java11 及以上同时支持 Java17需提前安装对应版本 JDK/JRE配套工具Git代码版本管理、MavenJava 项目编译打包、Docker容器化部署。1.3 Linux 环境安装 JenkinsWar 包方式推荐使用war包部署 Jenkins自带 Jetty 内置服务器适配性最强。下载 Jenkins 最新 war 包本文课程提供专属 war 包可直接使用配置环境变量编辑/etc/profile添加 Jenkins 运行目录与 Java 环境export JENKINS_HOME/data/jenkins/data export JAVA_HOME/data/java17 PATH$JAVA_HOME/bin:$PATH source /etc/profile启动 Jenkins将 war 包上传至/data/jenkins目录后台启动服务初始化访问nohup java -jar jenkins.war 查看初始密码cat nohup.out复制 Jenkins 生成的随机口令************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 829482167dd146b6a4d554d71e9d141d This may also be found at: /data/jenkins/data/secrets/initialAdminPassword ************************************************************* ************************************************************* *************************************************************浏览器访问http://服务器IP:8080粘贴口令进入安装界面选择推荐插件安装自动部署常用插件创建admin管理员账号完成初始化。1.4 安装必备依赖工具1.4.1 安装 Gityum install git -y1.4.2 安装 Maven官网下载https://maven.apache.org/download.cgi本文使用apache-maven-3.8.8解压配置cd /usr/local/ tar zxvf apache-maven-3.8.8-bin.tar.gz mv apache-maven-3.8.8 maven # 配置环境变量编辑/etc/profile export M2_HOME/usr/local/maven export PATH$PATH:$M2_HOME/bin source /etc/profile1.4.3 安装 Docker 环境# 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 配置阿里云Docker镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast # 安装启动Docker yum install docker-ce -y systemctl restart docker systemctl enable docker # 验证安装 docker version二、Jenkins 基础配置插件 认证2.1 安装核心必备插件Jenkins 安装完成后需手动安装以下插件用于实现可视化、远程部署、流水线、容器化等功能Blue OceanJenkins 新一代可视化界面优化流水线操作体验Publish Over SSH / SSH Agent Plugin / SSH plugin远程服务器 SSH 连接、文件传输、脚本执行Pipeline流水线核心插件实现 CI/CD 流程编排Kubernetes plugin对接 K8s 容器编排平台Docker、Docker PipelineDocker 镜像构建、推送、容器管理。2.2 配置认证凭据Jenkins 需配置 GitLab、服务器登录凭据用于拉取代码、远程部署支持SSH 密钥认证、账号密码认证两种方式进入 Jenkins【凭据】-【系统】-【全局凭据】添加 3 类核心凭据GitLab SSH 密钥凭据用于 Jenkins 免密拉取 GitLab 代码服务器账号密码凭据用于 SSH 连接远程应用服务器Jenkins 内置 SSH 密钥用于 Blue Ocean 等插件鉴权。三、GitLab 与 Jenkins 集成自动化部署核心架构3.1 整体架构总览Jenkins 打通GitLab 代码仓库→Jenkins 构建服务→应用服务器 / Docker/K8s全链路实现代码提交自动触发构建、打包、部署核心架构分为 5 类通过gitlabjenkins自动化部署常规网站流程通过gitlabjenkins部署一个java maven项目流程通过gitlabjenkins部署一个docker容器项目流程通过gitlabjenkins 部署k8s项目流程3.2 SpringCloud 与 K8s 区别与选型Spring Cloud开发侧微服务框架提供服务发现、负载均衡、配置管理侧重代码开发Kubernetes运维侧容器编排平台提供自动扩缩容、滚动升级、故障自愈侧重容器运维最佳实践不建议两者混用推荐SpringBoot KubernetesSpringBoot 开发业务K8s 管理容器服务。3.3 自动化部署通用流程开发人员将代码 Push 至 GitLab 代码仓库GitLab 触发 Jenkins 构建任务WebHook 钩子Jenkins 拉取最新代码调用 Maven 编译打包制作 Docker 镜像推送至私有镜像仓库远程服务器拉取镜像启动容器 / 服务完成自动化部署。四、实战Jenkins 部署 Java 项目 jpress4 种方式4.1 方式一传统方式部署 Java Web 项目传统部署直接打包代码通过 SSH 传输至远程服务器执行启动脚本无需容器化。Jenkins 项目配置自定义工作空间/data/jenkins/jpress源码管理选择 Git配置 GitLab 仓库地址git172.16.213.65:ops/jpress.git选择配置好的 GitLab SSH 凭据构建环境调用 Maven 执行打包命令mvn clean install -Dmaven.test.skiptrue远程部署配置SSH 插件配置 SSH 服务器连接信息传输启动脚本start-jpress.sh至远程服务器执行远程部署脚本rm -rf /usr/local/jpress mkdir /usr/local/jpress mv /usr/local/start-jpress.sh /usr/local/jpress chmod 755 /usr/local/jpress/start-jpress.sh远程启动脚本start-jpress.shcd /usr/local/jpress unzip starter-4.0.zip sed -i /Dundertow.devMode/s/^#//g jpress.sh sed -i /java.awt.headless/s/^/#/ jpress.sh sed -i /output.log\ 21/s/#//g jpress.sh sed -i 2i source /etc/profile jpress.sh ./jpress.sh start控制台输出如下jpress页面如下4.2 方式二Blue Ocean 可视化部署 Docker 镜像制作Blue Ocean 是 Jenkins 可视化流水线界面支持一键构建 Docker 镜像推送至私有仓库。步骤 1拉取代码 编译打包先创建流水线需要将密钥放置到GitlabGit 拉取 master 分支代码Shell 脚本执行 Maven 打包/usr/local/maven/bin/mvn clean install -Dmaven.test.skiptrue步骤 2编写 Dockerfile制作镜像# 构建基础镜像 cd docker docker build . -t jpress-base:${base_version} -f ./Dockerfile.base cd .. # 编写业务镜像Dockerfile cat dockerfile_jpress EOF FROM jpress-base:${base_version} LABEL maintainergaojf WORKDIR /opt/jpress COPY ./starter/target/starter-4.0/ /opt/jpress/ COPY ./docker/files/jpress.sh /opt/jpress/jpress1.sh COPY ./docker/files/jboot.properties /opt/jpress/config/jboot.properties RUN chmod x /opt/jpress/jpress1.sh \ rm -rf /opt/jpress/jpress.bat \ rm -rf /opt/jpress/config/undertow.txt \ rm -rf /opt/jpress/config/install.lock EXPOSE 8080 CMD [/opt/jpress/jpress1.sh, start] EOF # 构建业务镜像 docker build -t 172.16.213.65:4567/ops/images/jpress:${jpress_version} -f dockerfile_jpress .步骤 3推送镜像至私有仓库# 跳过重复构建 if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT ];then echo skip build exit 0 fi# 登录私有仓库并推送镜像 docker login 192.168.38.137:4567 -u root -p xxxxxx docker push 192.168.38.137:4567/ops/images/jpress:${jpress_version}4.3 方式三SSH 插件 Docker-Compose 编排部署使用 Docker-Compose 一键编排jpress 应用 MySQL 数据库实现服务依赖、持久化、重启策略管理通过 SSH 插件远程执行编排脚本。远程执行 Docker-Compose 脚本cd /data1 test -d compose || mkdir compose cd compose cat docker-compose.yml EOF version: 3.1 services: db: image: mysql:5.7 command: --default-authentication-pluginmysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: jpress MYSQL_DATABASE: jpress MYSQL_USER: jpress MYSQL_PASSWORD: jpress volumes: - ./docker_volumes/mysql:/var/lib/mysql jpress: depends_on: - db links: - db image: 172.16.213.65:4567/ops/images/jpress:v1.2 ports: - 8000:8080 ulimits: nofile: soft: 65536 hard: 65536 restart: always environment: TZ: Asia/Shanghai JPRESS_DB_HOST: db JPRESS_DB_PORT: 3306 JPRESS_DB_NAME: jpress JPRESS_DB_USER: jpress JPRESS_DB_PASSWORD: jpress volumes: - ./docker_volumes/webapp/attachment:/opt/jpress/webapp/attachment - ./docker_volumes/webapp/addons:/opt/jpress/webapp/addons - ./docker_volumes/webapp/WEB-INF/addons:/opt/jpress/webapp/WEB-INF/addons - ./docker_volumes/webapp/wp-content:/opt/jpress/webapp/wp-content - ./docker_volumes/webapp/templates/dockers:/opt/jpress/webapp/templates/dockers EOF # 重启服务 docker-compose down docker-compose up -d4.4 方式四Pipeline 流水线实现自动化部署Jenkins Pipeline 通过声明式 / 脚本式语法编排完整 CI/CD 流程支持分阶段可视化是企业级项目首选部署方式。4.4.1 Pipeline 核心概念Node执行流水线的 Jenkins 节点Stage流程阶段分为代码拉取、构建打包、远程传输、启动服务Step最小执行单元支持 Shell、Git、SSH 等操作语法分为声明式标准化、脚本式灵活自定义推荐声明式。4.4.2 jpress 项目 Pipeline 完整脚本pipeline { agent any stages { stage(git clone code) { steps { ws(dir: /data/jenkins/work2) { git(url: git172.16.213.65:ops/jpress.git, branch: master) sh /usr/local/maven/bin/mvn clean install -D maven.test.skiptrue } } } stage(Copy to Remote Host) { steps { ws(dir: /data/jenkins/work2) { script { def remoteHost 172.16.213.226 def remoteUser root def shellScript #!/bin/bash ssh ${remoteUser}${remoteHost} rm -rf /usr/local/jpsweb mkdir -p /usr/local/jpsweb scp starter/target/starter-4.0.zip ${remoteUser}${remoteHost}:/usr/local/jpsweb scp start-jpress1.sh ${remoteUser}${remoteHost}:/usr/local/jpsweb ssh ${remoteUser}${remoteHost} cd /usr/local/jpsweb unzip starter-4.0.zip writeFile file: remote_script.sh, text: shellScript } } } } stage(Execute Remote Script) { steps { ws(dir: /data/jenkins/work2) { sh chmod x remote_script.sh sh ./remote_script.sh } } } stage(Start Service) { steps { script { def remoteHost 172.16.213.226 def remoteUser root sh ssh ${remoteUser}${remoteHost} chmod 755 /usr/local/jpsweb/start-jpress1.sh sh ssh ${remoteUser}${remoteHost} /usr/local/jpsweb/start-jpress1.sh } } } } }4.4.3 脚本使用方法Jenkins 新建任务选择【流水线】流水线定义选择【Pipeline script】粘贴上述脚本配置凭据与服务器信息保存后直接构建。五、总结本文完整实现了Jenkins 从环境搭建、基础配置到传统部署、容器化部署、流水线部署的全流程实战覆盖了 Java 项目 CI/CD 的主流方案传统部署快速上线适合简单单体项目Docker 镜像部署标准化环境适配多服务器Docker-Compose 编排管理多服务依赖简化运维Pipeline 流水线企业级标准方案流程可视化、可复用、易维护。Jenkins 结合 GitLab、Maven、Docker、K8s可完全打通开发到运维的自动化链路减少人工操作降低上线风险提升迭代效率是后端开发、运维工程师必备核心技能。

相关新闻

AI Agent的工具调用机制架构设计:从单工具调用到多工具智能编排的完整方案

AI Agent的工具调用机制架构设计:从单工具调用到多工具智能编排的完整方案

AI Agent的工具调用机制架构设计:从单工具调用到多工具智能编排的完整方案 一、Tool Calling的架构困境——当Agent不再是单一LLM推理 LLM驱动的AI Agent与传统聊天机器人的核心差异在于能力——Agent不输出文本就结束交互,而是像人类一样使用工具、调用…

2026/7/23 1:49:40 阅读更多 →
DXPopover高级特性探索:动画效果、手势控制与性能优化

DXPopover高级特性探索:动画效果、手势控制与性能优化

DXPopover高级特性探索:动画效果、手势控制与性能优化 【免费下载链接】DXPopover A Popover mimic Facebook app popover using UIKit 项目地址: https://gitcode.com/gh_mirrors/dx/DXPopover DXPopover是一款基于UIKit开发的高质量弹窗组件,完…

2026/7/23 20:10:52 阅读更多 →
操作系统中作业的本质

操作系统中作业的本质

作业本质 作业 = 用户交给系统的****完整程序+数据+作业说明书 就是一整套完整任务 作业本质还是由进程完成的 提交状态 用户刚提交,系统还没接收 后备状态 系统接收,放外存队列,等待调度 运行状态 调入内存,创建进程开始执行 完成状态 执行结束,等待善后退出 流转顺序 提…

2026/7/21 19:29:59 阅读更多 →

最新新闻

油田通信维护进入集成时代|鼎讯 RM-1000 与一线运维模式探索

油田通信维护进入集成时代|鼎讯 RM-1000 与一线运维模式探索

在石油行业,通信维护是一项 “看不见” 的工作,却直接影响着生产的 “看得见” 的效率。 从钻井平台到输油管道,从炼化基地到储油库区,每一个环节的通信设备都需要定期检测和维护。过去,这项工作依赖多个独立仪器配合完…

2026/7/23 20:49:41 阅读更多 →
智能体测开Day4

智能体测开Day4

昨日回顾今日讲解vi 编辑文件命令搜索命令替换命令创建session连接别人的Linux1.首先找到vmware中编辑->虚拟网络编辑器->选择仅主机点击更多设置->选择NAT模式->选择NAT设置->主机端口选择一个未被占用的端口号->虚拟机IP地址查找CentOS的IP->虚拟机端口…

2026/7/23 20:49:41 阅读更多 →
Qt信创|鱼塘/虾塘/蟹塘分拣工智能台账管理系统

Qt信创|鱼塘/虾塘/蟹塘分拣工智能台账管理系统

# Qt信创|鱼塘/虾塘/蟹塘分拣工智能台账管理系统 ## 项目适配场景 适配**银河麒麟V10、统信UOS**国产信创,面向水产养殖分拣车间分拣工数字化作业全流程管控;对接**自动分级秤、扫码枪、AI视觉品相识别、分拣传送带PLC**,覆盖**成鱼/小龙虾/罗氏沼虾/大闸蟹/青蟹**三大品类…

2026/7/23 20:49:41 阅读更多 →
浏览器的 TLS 指纹:深入 JA3/JA4 原理与 BoringSSL 网络栈定制

浏览器的 TLS 指纹:深入 JA3/JA4 原理与 BoringSSL 网络栈定制

更多内容请见: 《指纹浏览器开发实战》 - 专栏介绍和目录 在指纹浏览器与风控系统的无声战役中,当攻防焦点从应用层的 JS 探针(navigator.webdriver、Canvas 噪声)转移到了网络协议栈,一场更加残酷且底层的降维打击便拉开了序幕。无数开发者曾陷入一个致命的盲区:精心伪造…

2026/7/23 20:49:41 阅读更多 →
别再搞混MCP和Agent Skill了:一个管工具能力,一个管做事流程

别再搞混MCP和Agent Skill了:一个管工具能力,一个管做事流程

引言:为什么这两个概念容易被混淆? 在当今快速发展的AI智能体生态中,MCP(Model Context Protocol) 和 Agent Skill(智能体技能) 是两个经常被提及但容易混淆的核心概念。许多开发者和AI从业者在…

2026/7/23 20:49:41 阅读更多 →
AI云原生实战07-湘钢5G+云+AI生产监控:边缘计算+中心训练的混合架构,把炼钢变成了“直播带货“

AI云原生实战07-湘钢5G+云+AI生产监控:边缘计算+中心训练的混合架构,把炼钢变成了“直播带货“

你在直播间看主播喊"321上链接",湘钢的AI在产线旁喊"321上推理"——区别是前者算的是GMV,后者算的是钢板表面有没有裂纹。一、炼钢炉旁的"云原生"先讲个真实的事。湖南湘潭钢铁集团(湘钢)&#xff…

2026/7/23 20:48:40 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻