当前位置: 首页 > news >正文

Linux运维:Jenkins部署

Jenkins 完整部署流程

一句话总结:Jenkins 是自动化流水线工具,把"代码提交→编译打包→测试→部署上线"全流程自动化,不用人工一步步操作


一、先搞懂核心逻辑

Jenkins 就像一个自动化机器人,你告诉它"代码提交后要做什么",它就会按顺序自动执行所有步骤,成功就部署上线,失败就发通知告诉你哪里错了。

标准流程闭环

开发者提交代码 → Git仓库 → Jenkins自动触发 → 拉取代码 → 编译打包 → 质量检查 → 推送镜像 → 部署到服务器 → 自动化测试 → 通知结果

二、完整部署步骤(以 Spring Boot + Docker + K8s 项目为例)

前置准备(一次性配置)

  1. 搭建 Jenkins 服务器:安装 JDK、Git、Docker、Maven 等工具
  2. 配置凭证:在 Jenkins 中添加 Git 仓库密钥、镜像仓库密码、服务器 SSH 密钥
  3. 配置环境:安装必要插件(Git、Pipeline、Docker、Kubernetes、SonarQube)
  4. 准备目标环境:测试服务器/生产服务器、Docker 镜像仓库、K8s 集群

步骤1:触发构建(3种方式)

  1. 自动触发(最常用):开发者提交代码到 Git 仓库(GitHub/GitLab),Git 通过 Webhook 通知 Jenkins 开始构建
  2. 定时触发:每天凌晨自动构建部署测试环境
  3. 手动触发:在 Jenkins 界面点击"立即构建"

步骤2:拉取最新代码

Jenkins 从 Git 仓库拉取指定分支(如dev/master)的最新代码到本地工作目录。


步骤3:编译打包

  • Java 项目:执行mvn clean package -DskipTests,生成.jar
  • Python 项目:执行pip install -r requirements.txt,打包依赖
  • 前端项目:执行npm install && npm run build,生成dist静态文件

步骤4:代码质量检查(可选但生产必做)

调用 SonarQube 扫描代码,检查代码漏洞、代码异味、测试覆盖率,不达标则直接终止构建。


步骤5:构建 Docker 镜像

用项目根目录的Dockerfile构建镜像,打上版本号(如v1.0.0或 Git 提交哈希)。


步骤6:推送镜像到仓库

把构建好的镜像推送到私有镜像仓库(如 Harbor、Docker Hub),供部署环境拉取。


步骤7:部署到目标环境

方式1:部署到物理机/虚拟机

通过 SSH 连接到目标服务器,执行以下操作:

  1. 拉取最新镜像
  2. 停止旧容器
  3. 启动新容器
  4. 检查容器是否正常运行
方式2:部署到 K8s 集群(生产主流)

Jenkins 调用kubectl apply -f deployment.yaml,更新 K8s 集群中的 Deployment,实现滚动更新。


步骤8:自动化测试(可选)

部署完成后,自动运行接口测试、UI 测试,验证部署是否成功。


步骤9:通知结果

通过邮件、钉钉、企业微信通知团队成员:

  • 构建成功:“项目 v1.0.0 已成功部署到测试环境”
  • 构建失败:“构建失败,错误原因:编译错误”

三、Jenkins Pipeline 脚本示例(直接能用)

这是生产环境最常用的声明式 Pipeline,把所有步骤写在一个Jenkinsfile里,和代码一起存在 Git 仓库。

pipeline{agent any environment{// 定义全局变量IMAGE_NAME="harbor.example.com/demo/spring-boot-demo"IMAGE_TAG="${BUILD_NUMBER}"K8S_NAMESPACE="demo"}stages{stage('拉取代码'){steps{git url:'https://git.example.com/demo/spring-boot-demo.git',branch:'dev',credentialsId:'git-credential'}}stage('编译打包'){steps{sh'mvn clean package -DskipTests'}}stage('构建镜像'){steps{sh"docker build -t${IMAGE_NAME}:${IMAGE_TAG}."}}stage('推送镜像'){steps{withCredentials([usernamePassword(credentialsId:'harbor-credential',usernameVariable:'USER',passwordVariable:'PASS')]){sh"docker login harbor.example.com -u${USER}-p${PASS}"sh"docker push${IMAGE_NAME}:${IMAGE_TAG}"}}}stage('部署到K8s'){steps{sh"kubectl set image deployment/spring-boot-demo spring-boot-demo=${IMAGE_NAME}:${IMAGE_TAG}-n${K8S_NAMESPACE}"sh"kubectl rollout status deployment/spring-boot-demo -n${K8S_NAMESPACE}"}}}post{success{dingtalk(robot:'jenkins-dingtalk',type:'MARKDOWN',title:'构建成功',text:["### 项目部署成功","项目名称:spring-boot-demo","版本号:${IMAGE_TAG}","部署环境:测试环境"])}failure{dingtalk(robot:'jenkins-dingtalk',type:'MARKDOWN',title:'构建失败',text:["### 项目部署失败","项目名称:spring-boot-demo","构建号:${BUILD_NUMBER}","请查看Jenkins日志排查问题"])}}}

四、面试标准答案

Jenkins 是一个开源的持续集成和持续部署工具,它的完整部署流程是:

首先,开发者提交代码到 Git 仓库,Git 通过 Webhook 触发 Jenkins 构建。Jenkins 拉取最新代码后,执行编译打包、代码质量检查等步骤,然后构建 Docker 镜像并推送到镜像仓库。最后,Jenkins 通过 SSH 或 kubectl 将应用部署到测试环境或生产环境,部署完成后自动运行测试并通知团队成员结果。

整个过程完全自动化,大大提高了开发效率,减少了人工操作带来的错误。

需要我给你一个纯物理机部署(不用Docker/K8s)的Pipeline脚本吗?

http://www.jsqmd.com/news/856311/

相关文章:

  • 汽车质量管理体系的核心要素与持续改进之道
  • Gemini 3.5 Flash 完整介绍:定价、性能、接入教程与选型建议
  • ABAQUS模态分析中的‘隐形’设置:材料阻尼、约束与接触,这些细节才是结果不准的元凶
  • 高频高速PCB板材选型:从参数本质到工程落地的专业指南
  • 嵌入式Linux下MT7601U无线网卡驱动移植与网络配置实战
  • 背单词为什么不背词典:CANN上FlashAttention的分块逻辑
  • Hyperf 高并发的庖丁解牛
  • 百考通AI搭起学术研究的“起跑线”
  • STM32/Delay延时函数编程思路
  • 别再死记硬背了!用一张图帮你理清CPU里的MMU、TLB和Cache到底是怎么分工的
  • 不知道怎么挖漏洞?吐血整理40个网络安全漏洞挖掘姿势,看完不信你还挖不到
  • 离线绘图新选择:draw.io桌面版,让敏感数据不再“上网”
  • 音乐学者紧急预警:Perplexity搜索结果偏差率高达47%?3步校验法立即挽救你的学术引用
  • 初识C语言(一)
  • 2026年5月国内优质招标网推荐:五大平台排名专业评测项目找标防遗漏 - 品牌推荐
  • 原生PHP如何才能提高并发?
  • RX65N嵌入式开发实战:从硬件设计到外设驱动与调试
  • 手把手教你用YOLOv5/PyTorch在DOTA V1.5数据集上训练自己的航拍目标检测模型
  • 别再手动管理数据了!用Codesys ST语言实现一个轻量级队列,5分钟搞定PLC数据缓存
  • Arch linux-nginx_LEMP自动化脚本
  • STM32F103+BTS7960:一个工科生的自动循迹小车避坑实录(附完整代码与调试心得)
  • 2026年5月pof膜品牌推荐:五家产品评测夜班包装防破损 - 品牌推荐
  • 告别死记硬背!用生活化案例图解博途V18中的定时器与计数器(TP/TON/TOF/TONR/CTU/CTD)
  • 把FlashAttention装进昇腾NPU:为啥它能让大模型推理快3倍?
  • AFSIM-模型导入导出-源码级Bug修改
  • 原生PHP到底如何缩短响应时间 TTFB?
  • VisionPro 相机集成与视觉测量
  • 摆脱论文困扰! AI论文工具2026最新测评与推荐
  • 【Perplexity词组搭配查询避坑清单】:8个致命误用场景+3类伪低困惑度陷阱,资深语言工程师紧急预警
  • Visa携手Jason Sudeikis,将足球赛场最简单的进球方式转化为2026年国际足联世界杯的最精彩球迷时刻