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

jenkins流程概述

1. 需求场景

  • 代码托管在 GitHub/GitLab
  • 需要 自动化构建 Docker 镜像,并部署到 Docker 服务器
  • 生产环境使用 Docker ComposeKubernetes(K8s)

2. Jenkins 流程

  1. 拉取代码
  2. 使用 Maven 构建 JAR
  3. 使用 Docker 构建镜像
  4. 推送 Docker 镜像到仓库
  5. 在服务器上运行容器

3. 配置 Jenkins 任务

Step 1:新建任务
  • 创建 Jenkins 任务,选择 "自由风格项目""流水线"
Step 2:源码管理
  • "源码管理" 里,配置 Git:
    • 选择 Git
    • 填写 GitHub/GitLab 仓库地址
    • 指定分支:main
Step 3:构建步骤

"构建" 里,选择 执行 Shell,输入以下脚本:

# 进入 Jenkins 工作目录
cd /var/jenkins_home/workspace/my_project

# 拉取最新代码
git pull origin main

# 使用 Maven 构建 JAR 包
mvn clean package -DskipTests

# 构建 Docker 镜像
docker build -t myapp:latest .

# 给镜像打标签(可选,适用于推送到私有仓库)
docker tag myapp:latest myregistry.com/myapp:latest

# 推送镜像到 Docker Hub / 私有仓库
docker push myregistry.com/myapp:latest

# 删除旧容器(如果存在)
docker rm -f myapp || true

# 运行新的 Docker 容器
docker run -d --name myapp -p 8080:8080 myregistry.com/myapp:latest

4. Dockerfile 示例

在项目根目录添加 Dockerfile

# 使用 JDK 17 作为基础镜像
FROM openjdk:17-jdk

# 复制构建的 JAR 包到容器
COPY target/myapp.jar /app.jar

# 运行应用
ENTRYPOINT ["java", "-jar", "/app.jar"]

5. 触发部署

  • 每次开发人员提交代码到 main 分支,Jenkins 自动:
    1. 拉取代码
    2. 构建 JAR
    3. 制作 Docker 镜像
    4. 推送到 Docker 仓库
    5. 部署到服务器

6. 进阶优化

  • 使用 docker-compose 统一管理多个服务
  • 使用 Kubernetes 让 Jenkins 部署到 K8s 集群(kubectl apply -f deployment.yaml
  • 结合 Nginx / Traefik 实现负载均衡
  • 自动回滚(当部署失败时回滚到上一版本)

总结

  1. 如果不使用容器,Jenkins 直接 构建 JAR 并运行(传统方式)。
  2. 如果使用 Docker,Jenkins 可以 自动构建 Docker 镜像 + 远程部署(现代微服务)。
  3. 如果是大规模服务,可以结合 Kubernetes(K8s)+ Jenkins 进行自动化管理。

 


http://www.kler.cn/a/571370.html

相关文章:

  • 计算机中的架构
  • 基于微信小程序的心理健康恢复系统+LW示例参考
  • 《深度学习进阶》第9集:自监督学习与无监督学习
  • react+vite+pnpm+ts基础项目搭建
  • 技术问题汇总:前端怎么往后端传一个日期?
  • 20250304学习记录
  • Stream在Swift 和 Flutter上的对比
  • 深入浅出C语言:第一步,理解 Hello World!
  • Visio 2021 专业版是微软推出的一款专业图表绘制工具 资源分享
  • AI赋能校园安全:科技助力预防与应对校园霸凌
  • 【暴力枚举】P2241 统计方形(数据加强版)
  • 四、Redis 事务与 Lua 脚本:深入解析与实战
  • 快速点位排查问题的方法
  • HTML前端手册
  • 第五天 Labview数据记录(5.2 Text文件读写)
  • 线程POSIX信号量/基于环形队列的⽣产消费模型
  • Docker安装Jaeger链路追踪平台
  • 家禽(驴、鸭、猪)-图像分类数据集
  • 1分钟,实现传感器通过串口服务器接入ZWS云
  • golang编程思考(1)——作用域