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,输入以下脚本:

bash 复制代码
# 进入 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

bash 复制代码
# 使用 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 进行自动化管理。
相关推荐
JoyCong19981 天前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
Elastic 中国社区官方博客1 天前
ES95:面向 Elasticsearch 时间序列指标的自适应压缩
大数据·运维·elasticsearch·搜索引擎·架构·全文检索
mqiqe1 天前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
mennekes1 天前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
开始学AI1 天前
Codex2API Docker 使用宿主机代理:OAuth Token 兑换 403 问题排查与解决方案
运维·docker·容器
晨枫阳1 天前
@changesets/cli是什么?哪些情况下需要使用?怎么使用
linux·运维·ubuntu
天远Date Lab1 天前
零信任架构实战:基于天远行驶证核查构建自动化车队准入网关
运维·人工智能·架构·自动化
不会就选b1 天前
Linux之网络基础(二)
linux·运维·网络
zhangfeng11331 天前
编辑远程服务器文件主要有以下几种方式和AI 编辑软件“限制读写权限在某个目录
运维·人工智能·ai编程
莫浅子1 天前
Day 4:USB 2.0 时序与带宽预算
linux·运维·网络