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 进行自动化管理。
相关推荐
m0_7482515221 分钟前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
亚林瓜子1 小时前
Minio安装(Docker Compose方式)
运维·docker·容器·minio·compose
張萠飛1 小时前
Docker的常用镜像
运维·docker·容器
Craaaayon1 小时前
Docker基础-自定义镜像与容器网络
java·运维·网络·数据库·后端·docker·容器
Yuanymoon1 小时前
【由技及道】量子构建交响曲:Jenkinsfile流水线的十一维编程艺术【人工智障AI2077的开发日志008】
jenkins·devops·jenkinsfile·pipe
A星空1231 小时前
Linux cat 命令
linux·运维·服务器
xkroy2 小时前
jconsole观察进程的多线程
linux·运维·服务器
web136885658712 小时前
Linux安装Redis、远程连接Redis
linux·运维·redis
Watink Cpper2 小时前
[MySQL初阶]MySQL(3)表的约束
linux·运维·服务器·数据库·mysql·表的约束
技术小齐4 小时前
网络运维学习笔记(DeepSeek优化版) 012网工初级(HCIA-Datacom与CCNA-EI)DHCP动态主机配置协议(此处只讲华为)
运维·网络·学习