写点什么

基于 SVN 的 CICD 调研方案 _

作者:ZuccRoger
  • 2022 年 5 月 14 日
  • 本文字数:789 字

    阅读完需:约 3 分钟

定个小目标

​ 经过沟通后,第一阶段来说是至少将 dnm 项目的后端 代码上传到 svn 之后, 能够容器化地去做到热部署。

CICD 工具现状

​ 工具的选择:

​ 其中新锐 Drone 以及 老牌的 gitlabCI 需要和 git 搭配,但是 我们 效能平台部 以及整个雷火的游戏都是在 svn 上的,所以可以告别这俩只有 Jenkins。

方案选定

  1. Jenkins + Docker 自动化集成环境搭建

我遇到的问题

  1. 缺失 构建一个 maven 项目 的选项.


  1. image-20220512164618895


    【解决方案 I 】是需要去插件市场下载的 maven integration



  1. image-20220512164730229


    【解决方案 II】 直接在 maven 的镜像中打 jar 包进行代码的编译打包,至于我是怎么做的后文有介绍.

  2. 对于 java 的项目我该配置哪些流程

    流程拆解


  1. 整体流程


    ## 可以自己搞一个镜像不需要在jenkins上安装java maven之类的。 FROM maven:3.6.0-jdk-8-alpine AS mvn COPY settings.xml WORKSPACE /data/workspace COPY xxx /data/workspace RUN mvn clean package From openjdk:8-jre-alpine COPY --from=mvn /data/workspace/xxx/target/my-app-1.0-SNAPSHOT.jar dest ENTRYPOINT[]

    命令

  2. Docker 部署后发现


  1. 运行失败


    查看自己的 dockerfile 文件,只有短短几行就是做了一个复制到/tmp 下然后进行 mvn clean package.结果说找不到主类.

    于是自己到镜像中查看



  1. 镜像中目录文件

    好家伙发现没有 src 目录。


    找到了一个病友, 现象是:



  1. copy前


  1. copy后


    最后通过修改 dockerfile

    最后完美运行。



  1. 主类问题解决正常打包


需要解决的事情(按照优先级排序)

  1. 不同机器之间如何部署?Jenkins通过Publish Over SSH实现前端项目部署到远程服务全纪录

  2. 多 module 的问题是如何处理?

  3. 代码的 diff,类似发布系统,两个环境的代码进行比对。

  4. 热部署,在服务升级的时候最好不出现 502 等问题,用户无感知地去升级

参考资料

  1. 热部署

  2. 手把手带你搭建jenkins

  3. 基于轻舟CICD的代码静态扫描流程分享

  4. 阿里巴巴如何基于 Kubernetes 实践 CI/CD

  5. 修改docker镜像并重新推送到镜像仓库

  6. Dockerfile 多阶段构建

用户头像

ZuccRoger

关注

还未添加个人签名 2019.10.06 加入

还未添加个人简介

评论

发布
暂无评论
基于SVN的CICD调研方案 __5 月月更_ZuccRoger_InfoQ写作社区