Jenkins 流水线全流程实战笔记

Jenkins 流水线全流程实战笔记

核心架构思路

  1. 宿主机 (VPS):只安装 Docker,作为底层基座。
  2. Jenkins 容器:作为“指挥官”。
    • 特权:挂载/var/run/docker.sock,使其拥有调用宿主机 Docker 的能力(即 Docker-in-Docker)。
    • 环境:通过自定义Dockerfile,内置 JDK 8 (用于编译旧项目) 和 Maven。
  3. 应用容器:由 Jenkins 指挥宿主机 Docker 生成并运行的最终服务。

第一阶段:搭建 Jenkins 基础设施

这一步的目标是构建一个**“全能版”**的 Jenkins 镜像,解决官方镜像没有 Maven 和 JDK 8 的问题。

1. 编写 Jenkins 基座 Dockerfile

文件名:Dockerfile(位于 Jenkins 部署目录)

Dockerfile

# 基础镜像:官方最新 Jenkins LTS FROM jenkins/jenkins:lts USER root # 1. 换源并安装基础工具 (Maven, Docker CLI) # 注意:这里安装 Docker CLI 是为了在容器内能敲 docker 命令 RUN apt-get update && \ apt-get install -y maven docker.io wget tar # 2. 【关键】手动安装 JDK 8 # 原因:Jenkins 新版运行需要 JDK 11/17,但我们的项目需要 JDK 8 编译 # 方案:从 Temurin 官方源下载解压,后续在流水线中通过环境变量指定路径 RUN wget -q https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u402-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u402b06.tar.gz -O /tmp/jdk8.tar.gz && \ mkdir -p /opt/jdk8 && \ tar -xzf /tmp/jdk8.tar.gz -C /opt/jdk8 --strip-components=1 && \ rm /tmp/jdk8.tar.gz # 3. 验证环境安装 RUN /opt/jdk8/bin/java -version && mvn -v && docker -v

2. 编排服务 docker-compose.yml

文件名:docker-compose.yml

YAML

version: '3.8' services: jenkins: # "build: ." 表示使用当前目录的 Dockerfile 构建镜像,而不是直接拉取 build: . container_name: jenkins-pro restart: always ports: - "9090:8080" # 面板端口:宿主机 9090 -> 容器 8080 - "50000:50000" # 如果有从节点连接需要此端口 volumes: - ./jenkins_data:/var/jenkins_home # 数据持久化 - /var/run/docker.sock:/var/run/docker.sock # 【核心】挂载 Docker 守护进程 - /usr/bin/docker:/usr/bin/docker # 映射 Docker 二进制文件

3. 启动与初始化

# 构建镜像并后台启动容器(串行执行:先 build 后 up) docker compose up -d --build
  • 解锁与安装
    1. 查看初始密码:docker logs -f jenkins-pro
    2. 访问http://<你的IP>:9090,输入密码。
    3. 选择“安装推荐插件”
    4. 安装Gitee Plugin(系统管理 -> 插件管理)。
    5. 配置 Gitee 凭证 (API 令牌或账号密码) 和全局配置。

第二阶段:项目配置 (Git 仓库端)

这一步体现了Pipeline as Code (流水线即代码)的思想,将构建逻辑存放在代码仓库中。

1. 项目应用 Dockerfile

文件名:Dockerfile(位于项目根目录)

Dockerfile

# 运行阶段只需要 JRE,使用 alpine 版本体积最小 FROM eclipse-temurin:8-jre-alpine WORKDIR /app VOLUME /tmp # 拷贝编译后的 jar 包 (注意:这是 Jenkins 在上一阶段 maven package 生成的) COPY target/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]

2. 流水线脚本 Jenkinsfile

文件名:Jenkinsfile(位于项目根目录)

Groovy

pipeline { agent any // 【环境变量】强制指定使用我们在 Jenkins 容器里装好的 JDK 8 environment { JAVA_HOME = "/opt/jdk8" PATH = "/opt/jdk8/bin:$PATH" APP_NAME = "my-boot-app" } stages { stage('1. 环境检测') { steps { sh "java -version" // 确认是 1.8 sh "mvn -v" } } stage('2. 拉取代码') { steps { // 读取 Jenkins 任务配置的 Git 地址和凭证 ,scm代替了git clone checkout scm } } stage('3. 编译打包') { steps { // 跳过测试,利用外网环境快速下载依赖并打包 sh "mvn clean package -DskipTests" } } stage('4. Docker发布') { steps { script { // 利用挂载的 docker.sock,在宿主机上构建镜像 sh "docker build -t ${APP_NAME}:latest ." // 清理旧容器 (|| true 防止首次运行报错) sh "docker rm -f ${APP_NAME} || true" // 启动新容器,映射端口到宿主机 sh "docker run -d -p 8080:8080 --name ${APP_NAME} ${APP_NAME}:latest" } } } } }

第三阶段:触发自动化 (Webhook)

实现Git Push -> 自动发布的闭环。

  1. Jenkins 端
    • 新建 Item -> 选择Pipeline (流水线)
    • 流水线定义:选择Pipeline script from SCM-> Git -> 填入仓库地址。
    • 构建触发器:勾选Gitee webhook 触发构建,生成并复制WebHook 密码
  2. Gitee 端
    • 仓库管理 -> WebHooks -> 添加。
    • 填入 Jenkins 给出的 URL 和 密码。
    • 事件勾选Push

总结:数据流向图

  1. 开发提交:你本地 IDEAgit push代码。
  2. 触发通知:Gitee 通过 Webhook 通知 Jenkins “有新代码了”。
  3. 环境准备:Jenkins 启动流水线,加载 JDK 8 环境。
  4. 编译构建:Jenkins 执行mvn package,生成target/xxx.jar
  5. 镜像制作:Jenkins 调用宿主机的 Docker,读取项目Dockerfile,把 jar 包打成镜像。
  6. 服务部署:Jenkins 销毁旧容器,启动新容器(端口 8080)。

最终效果:代码提交后,喝杯水的功夫,服务器上的应用已经自动更新为最新版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可直接商用的疲劳驾驶检测系统:基于 YOLOv10 的完整实战(源码 + UI 全开)

文章目录 基于YOLOv10的疲劳驾驶检测系统实战教程:UI界面+模型训练+实时部署,让你的项目从“Demo”到“产品” 一、为什么选YOLOv10做疲劳驾驶检测? 二、系统架构与技术拆解 (一)系统核心流程 (二)技术选型逻辑 三、实战:从数据到系统的全流程构建 步骤1:数据集准备与…

WPF资源系统

文件资源 程序集资源 例如一些图片、音频、字体等,将这些文件导入到项目中,就可以在代码中使用这些资源 图片资源将资源复制到项目中。右键设计文件属性的生成操作为资源在xaml中使用图片资源<Window x:Class=&qu…

RK3588端实时人体姿态识别方案:YOLOv11-Pose高精度落地,推理速度直接拉满

【YOLOv11-pose姿态识别部署至RK3588:模型训练到RKNN落地,让人体姿态分析精度与边缘推理速度双突破】 在人体姿态识别场景中,传统模型在复杂动作下的关键点漏检率高达20%以上,而基于YOLOv11-pose的改进方案可将关键点平均精度(mAP)提升至91.3%;通过RK3588边缘平台与RKNN…

union 和 union all的区别

1、union和union all UNION对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;相当于使用distinct关键字。而UNION ALL则对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;即所有结果全部显示&#xff0c;不管是否重复。 UNION操作会去除重复的记录&…

Flutter 3.22+ 高性能开发实战:从状态管理到原生交互全解析 - 指南

Flutter 3.22+ 高性能开发实战:从状态管理到原生交互全解析 - 指南2026-01-18 18:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

【大数据毕设选题推荐】基于Hadoop+Spark的起点小说网数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

8B小模型后训练实战:企业私域语义空间稳定性与通用能力平衡指南

本文探讨8B小模型通过后训练在企业私域语义空间中的应用价值。实验表明&#xff0c;经过SFTDPO训练的模型能在不依赖system prompt/RAG的情况下稳定进入私域语义空间&#xff0c;同时保持通用知识与CoT能力。文章分享了三条实践经验&#xff1a;警惕"脑损伤"SFT、训练…

2026首发版,自学AI大模型的正确顺序:最新最全学习路线

本文提供大模型学习的七个阶段完整路线图&#xff1a;从数学编程基础、机器学习、深度学习到自然语言处理、大规模语言模型(如Transformer、BERT、GPT)及其应用&#xff0c;最后为持续学习进阶。每个阶段都配有推荐书籍、课程和论文资源&#xff0c;并提供学习资料包帮助零基础…

【计算机毕设推荐】:Hadoop+Django气象地质灾害大数据可视化系统 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

基于Qlearning强化学习的水下无人航行器三维场景路径规划与避障系统matlab性能仿真

1.引言 水下无人航行器(Unmanned Underwater Vehicle, UUV)的三维路径规划与避障是海洋工程领域的核心问题,其目标是在复杂水下环境(含礁石、沉船等静态障碍物及洋流等动态干扰)中,自主生成一条从起点到目标点的…

大模型选择困难症?8款主流AI助手(GPT/Claude/GLM等)特点与适用场景详解,建议收藏

文章对比8种主流大语言模型(GPT、Claude、Gemini、GLM、Minimax、DeepSeek、Qwen和Kimi)的特点和适用场景。GPT系列全能型&#xff1b;Claude擅长写作&#xff1b;Gemini擅长资料整合&#xff1b;GLM中文自然&#xff1b;Minimax创意丰富&#xff1b;DeepSeek代码逻辑强&#x…

linux 设置 udp 缓冲区大小的方法有多少种

1.linux 设置 udp 缓冲区大小的方法有多少种 在 Linux 系统中&#xff0c;设置 UDP 缓冲区大小的方法主要有以下几种&#xff0c;分别适用于不同的场景和粒度&#xff08;系统级、进程级、套接字级&#xff09;&#xff1a; 1. 通过 setsockopt() 系统调用&#xff08;套接字级…

程序员转型AI产品经理完整指南:大模型时代必备技能与学习路径

文章详细分析了转型AI产品经理的必要性与路径。首先指出AI快速发展使传统产品经理面临挑战&#xff0c;转型是必然趋势。然后介绍了AI产品经理的四大分类&#xff1a;C端、B端、硬件型和技术型&#xff0c;并分析了各自的特点和要求。最后提供了转型方法&#xff1a;确定适合方…

爱心公益 PPT 一键生成平台 TOP6,无需设计基础也能做

6款好用工具推荐&#xff0c;新手也能搞定爱心公益PPT一键生成 作为经常帮公益组织和校园社团做PPT的过来人&#xff0c;我太懂新手做爱心公益PPT的痛点了&#xff1a;找模板耗半天、排版没思路、素材怕侵权&#xff0c;最后熬夜做出来的效果还不尽如人意。其实现在有很多实用工…

关于SSD1315/SSD1306的0xDA指令

最近在玩一块使用ssd1315驱动的屏幕,发现0xDA指令(Set COM Pins Hardware Configuration)的实际效果和数据手册有些出入,经过查看显示屏的手册和反复实验,发现了一些细节问题。把自己的总结分享出来。因为ssd1306…

Redis-配置文件 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

内存清理软件工具WinMemoryCleaner,【windows内存自动优化清理】

windows电脑内存清理工具WinMemoryCleaner&#xff0c;让你电脑飞起来 WinMemoryCleaner内存优化软件是Windows专用工具&#xff0c;它以轻量安全、精准高效的特性&#xff0c;解决多任务卡顿、内存占用过高难题&#xff0c;适配全版本Windows系统。大小才472KB&#xff0c;还…

让 YOLOv11 Pose 在 RKNN 上跑起来:端侧姿态估计部署与性能优化实战

文章目录 YOLOv11 Pose在RKNN平台的部署实现:从理论到实践 摘要 1. 引言 1.1 研究背景 1.2 技术挑战 1.3 本文贡献 2. 理论基础 2.1 YOLOv11 Pose架构分析 2.1.1 Backbone网络 2.1.2 Neck网络 2.1.3 检测头设计 2.2 姿态估计的数学模型 2.2.1 关键点表示 2.2.2 损失函数设计 2…

AI学术支持:6个平台智能分析与专业内容优化

工具对比总结 以下是8个AI论文工具的简要排名&#xff0c;基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈&#xff0c;数据源于引用内容案例&#xff1a; 工具名称 主要功能 优势亮点 aibiye 降AIGC率 20分钟处理&#xff0c;AIGC率降至个位数&#xfff…

导师严选2026自考AI论文平台TOP10:哪款真能帮你写好毕业论文?

导师严选2026自考AI论文平台TOP10&#xff1a;哪款真能帮你写好毕业论文&#xff1f; 2026年自考AI论文平台测评&#xff1a;如何选对工具提升写作效率&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的自考生开始借助AI论文平台来辅助毕业论文的撰写。然而&…