news 2026/2/1 4:10:06

Jenkins 流水线全流程实战笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/27 7:49:05

遥感小目标检测难题一次解决:YOLOv8 + RepVGG + QueryDet 实战全指南

文章目录 一、引言与技术背景 1.1 目标检测技术的重要性与广泛应用 1.2 深度学习在目标检测领域的革命性进展 1.3 YOLO系列算法的发展历程与YOLOv8的技术创新 二、实验环境搭建与数据集深度分析 2.1 硬件环境配置的重要性与最佳实践 2.2 软件环境配置与依赖管理最佳实践 2.3 遥…

作者头像 李华
网站建设 2026/1/31 18:09:44

AI论文工具TOP8:改写+写作功能深度测评

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

作者头像 李华
网站建设 2026/1/31 3:09:23

8款AI论文工具大PK:改写与写作功能谁更强?

AI论文生成工具排行榜&#xff1a;8个网站对比&#xff0c;论文降重写作功能全 工具对比总结 以下是8个AI论文工具的简要排名&#xff0c;基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈&#xff0c;数据源于引用内容案例&#xff1a; 工具名称 主要功能 优…

作者头像 李华
网站建设 2026/1/31 18:06:15

学长亲荐8个一键生成论文工具,专科生搞定毕业论文!

学长亲荐8个一键生成论文工具&#xff0c;专科生搞定毕业论文&#xff01; 论文焦虑不再&#xff0c;AI 工具带来新希望 对于专科生来说&#xff0c;撰写毕业论文往往是一道难以跨越的门槛。面对繁重的写作任务、复杂的格式要求以及时间压力&#xff0c;许多同学感到无从下手。…

作者头像 李华
网站建设 2026/1/30 18:12:43

水下生物水下动物海洋动物检测数据集VOC+YOLO格式9333张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;9333标注数量(xml文件个数)&#xff1a;9333标注数量(txt文件个数)&#xff1a;9333标注类别…

作者头像 李华
网站建设 2026/1/26 19:15:39

AI论文助手功能对比:8款工具写作与降重测评,学术效率提升方案

基于核心功能、处理速度和适用性的综合评估&#xff0c;结合用户反馈和实际案例数据&#xff0c;以下8个AI论文工具在学术写作辅助领域表现突出&#xff1a; ChatGPT凭借强大的语言生成能力位居前列&#xff0c;紧随其后的是专注于文献综述的Elicit和高效润色工具QuillBot&…

作者头像 李华