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

三、java项目自动部署流水线搭建

java项目自动部署流水线搭建

背景:希望简化项目的部署发版人为操作,同时运用上新学的k8s方案。希望能帮助到和我一样非运维专业又想简化个人部署发版流程的个人开发者。
方案:云服务器1台+云效(应用交付)+镜像仓库+代码仓库+k3s。

整体流程:代码更新后推送到远程代码仓库(人工) >> 选择代码分支点击部署 (人工) >> 拉取代码编译(自动)>> 构建镜像推送到镜像仓库(自动)>> 在k3s上部署服务(自动) >> 线上项目版本迭代(自动)。

云服务器一台:CPU - 2核 内存 - 2GB 系统盘 - SSD云硬盘 40GB
系统环境:我用的是腾讯云的操作系统OpenCloudOS 9 ,建议centos环境8及以上
部署方式:k8s试过了,配置太低跑不起来,所以用的k3s。自己笔记本也试过了,没公网ip不行,还是得用云服务器,买了个最便宜的。

一、服务器k3s环境准备

  1. 云服务器准备
    云服务器推荐:
    阿里云: 阿里云服务器
    腾讯:腾讯云服务器
    (新人首次购买只要68一年)

系统环境:centos 和 ubuntu 都可以,本文以centos举例。

  1. 安装k3s
    k3s介绍:轻量级k8s。
    输入下方指令进行安装,my-ip替换为自己服务器的公网ip。
# 安装k3s的master节点
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -  --advertise-address my-ip--node-external-ip my-ip --node-ip my-ip

安装结束后,创建容器源加速文件。

vi /etc/rancher/k3s/registries.yaml 

输入以下内容,保存文件。

mirrors:docker.io:endpoint:- "https://docker.m.daocloud.io"

保存后,输入指令重启k3s。

systemctl daemon-reload 
systemctl restart k3s

输入指令查看k3s集群配置文件,后面需要用到该文件

kubectl config view --raw 

二、镜像仓库准备

我这里用的阿里云免费的
阿里云个人镜像仓库申请地址:https://cr.console.aliyun.com/cn-shenzhen/instances
进来后页面如下:
1
点击个人实例进入,配置下访问凭证(登陆密码),命名空间,镜像仓库。镜像仓库这里就结束了。

在这里插入图片描述

三、云效准备

  1. 云效注册
    云效地址: https://devops.aliyun.com/
    自己注册

  2. 应用交付配置
    进入应用交付功能
    1
    点击资源池,选择导入集群,导入Kubernetes集群 - 通用 K8s,kubeconfig处粘贴之前输出的k3s集群配置文件。将server处的ip地址替换为公网ip。
    1

  3. 应用配置
    点击应用,新建一个应用,然后进入建好的应用。
    1
    选择环境,选一个环境关联刚才创建好的资源。
    1
    点击设置,选择一个流水线模板
    1
    继续下一步,关联你的代码仓库。关联制品仓库,就是之前你创建的镜像仓库,点进去后的公网地址
    1
    其中需要你创建这些连接,其中gitee代码仓库平台的令牌位置我给了个截图示例,至于其他代码仓库平台的自己找下。
    1
    1
    继续下一步,点击编排设置。按标红处添加内容,意思是该项目服务对外暴露的访问端口为:30081。这样发布后就能通过ip:port直接访问到项目。之后保存退出。
    1
    最后一个,研发流程配置,以测试流水线为例。
    1
    先关联代码仓库,然后Maven单元测试这里,安装jdk版本要对上,例如我的版本是17。
    1
    后面也都比较简单,需要的镜像仓库和环境之前都配好了,直接选就行了。最后保存退出。
    1

  4. 应用部署
    最后回到研发流程,点击运行就可以了。这样每次更新完代码就能一键部署了。
    2

四、代码准备

  1. 除了以上步骤,还需要编写个镜像打包文件,之前的研发流程里镜像构建步骤需要用到这个文件。就是这里,空代表该文件在项目根目录下。
    1
  2. 新建一个Dockerfile文件,放到根目录下。
    在1
插入图片描述
    文件如下:意思是拉取jdk17镜像,将jar包拷贝到工作目录下,暴露8081端口,执行java脚本
FROM eclipse-temurin:17
LABEL authors="xfh"
ARG WORKDIR="/app"
ENV WORKDIR_TEST="/app2"
ENV APP_NAME="damai"
ENV LANG=zh_CN.UTF-8
ENV JVM_OPTS="-Xms1024m -Xmx4096m"
ENV SPRING_PROFILES_ACTIVE=pro
RUN mkdir ${WORKDIR}
WORKDIR ${WORKDIR}
COPY ${PROJECT_DIR}/target/*.jar ${WORKDIR}/app.jar
#COPY ./*.jar /${WORKDIR}/app.jar
#COPY ./bin /${WORKDIR}/bin
EXPOSE 8081
ENTRYPOINT ["java", "-jar","app.jar"]
CMD ["${JVM_OPTS}","-Dapp.name=pre","-Dspring.profiles.active=$SPRING_PROFILES_ACTIVE"]

如果中途遇见问题可以评论区一起交流,个人各种踩坑才终于把这些流程跑通,所以熬夜发布这篇文章,希望帮到更多的人。
完结撒花
制作不易,给个赞吧!!!

http://www.lqws.cn/news/550909.html

相关文章:

  • oracle内存参数调整
  • 【C++】string的模拟实现
  • 关于css的height:100%
  • 助力高考,利用python获取本专科专业选考科目要求
  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • Ollama+Gemma3模型+Open WebUI,无公网IP如何内网穿透远程访问?
  • 【Linux 设备模型框架 kobject 和 kset】
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • 【k近邻】 K-Nearest Neighbors算法原理及流程
  • 机器学习3——参数估计之极大似然估计
  • C++并发编程-4.unique_lock,共享锁和递归锁
  • 详解HashMap底层原理
  • 电脑远程控制另一台电脑无法连接怎么办
  • PostgreSQL 容器化分布式技术方案
  • 基于51单片机-蜂鸣器演奏《飞雪玉花》
  • 什么是故障注入测试
  • 强化联邦学习的车联网 DDoS 攻击检测
  • 【图像处理入门】12. 综合项目与进阶:超分辨率、医学分割与工业检测
  • FLUX.1 Kontext(Dev 版)训练lora基础教程
  • TiDB AUTO_RANDOM 超大主键前端精度丢失排查:JavaScript Number 限制与解决方案
  • 内测开启!看海量化回测系统V2.0版本更新,基于miniQMT的回测系统问世!
  • Threejs开发指南(第七篇 利用AI进行threejs开发)
  • 封装nuxt3的SSR请求和CSR请求方法
  • 1 Studying《Is Parallel Programming Hard》6-9
  • 双指针技巧深度解析
  • C#系统学习第二章——第一个C#程序
  • P27:RNN实现阿尔茨海默病诊断
  • 华为云Flexus+DeepSeek征文|基于Dify+ModelArts开发AI智能会议助手
  • 本地部署 WordPress 博客完整指南(基于 XAMPP)