基于 SVN 的 CICD 调研方案 _
定个小目标
经过沟通后,第一阶段来说是至少将 dnm 项目的后端 代码上传到 svn 之后, 能够容器化地去做到热部署。
CICD 工具现状
工具的选择:
其中新锐 Drone 以及 老牌的 gitlabCI 需要和 git 搭配,但是 我们 效能平台部 以及整个雷火的游戏都是在 svn 上的,所以可以告别这俩只有 Jenkins。
方案选定
Jenkins + Docker 自动化集成环境搭建
我遇到的问题
【解决方案 I 】是需要去插件市场下载的 maven integration
【解决方案 II】 直接在 maven 的镜像中打 jar 包进行代码的编译打包,至于我是怎么做的后文有介绍.
对于 java 的项目我该配置哪些流程
## 可以自己搞一个镜像不需要在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[]
命令
查看自己的 dockerfile 文件,只有短短几行就是做了一个复制到/tmp 下然后进行 mvn clean package.结果说找不到主类.
于是自己到镜像中查看
最后通过修改 dockerfile
最后完美运行。
需要解决的事情(按照优先级排序)
不同机器之间如何部署?Jenkins通过Publish Over SSH实现前端项目部署到远程服务全纪录
多 module 的问题是如何处理?
代码的 diff,类似发布系统,两个环境的代码进行比对。
热部署,在服务升级的时候最好不出现 502 等问题,用户无感知地去升级
评论