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

Gitlab 之 Windows 环境进行 tomcat 持续集成部署,包含项目打包,备份,部署以及问题

问题:

之前在用 Gitlab 在 windows 上做持续集成时候遇到了问题,也有问一些认识的人,但是他们都表示没听懂没遇到过。
我之前的部署流程:Gitlab-runner 拉取代码 ➡ Ant 打包 ➡ 项目复制到 tomcat 的 webapps 下面 ➡ 最后 startup.bat 启动
结果:Gitlab 的任务无法完成,会一直在进行,可能是因为直接去启用了 startup.bat,由于 startup.bat 启动了项目就不会结束的原因,导致 Gitlab 任务无法结束,最后结果当然只能任务失败,可以看到强行跑了 1h,然后失败了

思路:

由此可见传统的部署方式显然是不行的,在偶然下发现了一个有趣的东西解决了我的难处,因此只能使用新的方法来部署

  1. 把 tomcat 注册为 windows 的一个服务
  2. 停止 tomcat 服务
  3. 备份历史项目(我这里的备份是:备份的目录 ➡ 当天的日期 ➡ 项目名-备份时间.war)
    因此打包每次历史我都做了保留,按需修改
  4. Ant 打包项目(为啥不是 maven,因为项目真的太老了没有 maven,按需修改)
  5. 打包项目放到 webapps 下面
  6. 启动 tomcat 服务

具体步骤:

安装 gitlab-runner:GitLab 之 GitLab-Runner 安装,配置与问题汇总
PS:可能有人会遇到部署了 gitlab-runner 后怎么跑都报 9009 错误,这个解答在上面这个文章的最下面

注册 tomcat 为服务

# 进入 tomcat 的 bin
cd D:\tomcat7\bin

# 注册 tomcat 为 服务
# 格式:service install 服务名
# 这个服务名是自定义的,我这是 tomcat7,所以干脆就叫这个
service install tomcat7

# 启动/停止服务
net start/stop tomcat7

由于之前跑过了,就不截图了

.gitlab-ci.yml:

stages:
- build
build-contain:
  stage: build
  script:
   # 设置变量
   # 设置服务名
   - $tomcat='tomcat7'

   # y  年
   # M  月
   # d  日
   # h  小时(12小时制)
   # H  小时(24小时制)
   # m  分钟
   # s  秒
   # 获取年月日
   - $ymd=Get-Date -Format 'yyyyMMdd'
   # 获取时分秒
   - $hms=Get-Date -Format 'HHmmss'

   # 判断如果服务处于运作状态,则停止 tomcat 服务
   - if ((Get-Service $tomcat).status -eq 'Running') {Stop-Service $tomcat}

   # 备份历史项目
   # 判断文件夹不存在,不存在则创建当天带年月日的文件夹
   - if (-not (Test-Path D:\测试库备份\backup\$ymd)) {New-Item -path D:\测试库备份\backup\$ymd -type directory}
   # 备份文件
   - Copy-Item D:\tomcat7\webapps\ldfw.war D:\测试库备份\backup\$ymd\
   # 对备份文件重命名带上后缀时分秒
   - Rename-Item D:\测试库备份\backup\$ymd\ldfw.war -NewName ldfw-$hms.war
   # 判断文件夹存在,存在则删除文件
   - if (Test-Path D:\tomcat7\webapps\ldfw) {Remove-Item -Path D:\tomcat7\webapps\ldfw -Force -Recurse -Confirm:$false}
   - if (Test-Path D:\tomcat7\webapps\ldfw.war) {Remove-Item -Path D:\tomcat7\webapps\ldfw.war -Force -Recurse -Confirm:$false}

   #进入 ant/bin
   - cd D:\apache-ant-1.10.5\bin
   # 调用 ant 打包项目
   - ant -f $CI_PROJECT_DIR\build.xml
   # 复制文件到 webapp 下面
   - Copy-Item $CI_PROJECT_DIR\ldfw.war D:\tomcat7\webapps

   # 判断如果服务处于停止状态,则启动 tomcat 服务
   - if ((Get-Service $tomcat).status -eq 'Stopped') {Start-Service $tomcat}
  only:
   # 对应的分支,走此分支才执行
   - test-sit
  tags:
   # 注册的 gitlab-runner
   - runner-test

附带 Ant 使用:Ant 安装,配置文件编写与使用

结果:

相关文章:

  • Git 克隆指定分支的代码
  • Vue 新手学习笔记:vue-element-admin 之 入门开发教程(v4.0.0 之后)
  • Tomcat 内存优化
  • SpringCloud 之 Zuul 基础使用与进阶
  • Navicat 连接 sqlserver 带端口号配置
  • SpringCloud 之 Config 配置中心与动态刷新
  • Java 基础:队列
  • Java 基础:栈
  • LeetCode 151. 翻转字符串里的单词
  • LeetCode 1. 两数之和
  • LeetCode 20. 有效的括号
  • LeetCode 202. 快乐数
  • LeetCode 217. 存在重复元素
  • LeetCode 200. 岛屿数量
  • LeetCode 349. 两个数组的交集
  • css选择器
  • es6要点
  • httpie使用详解
  • in typeof instanceof ===这些运算符有什么作用
  • javascript面向对象之创建对象
  • Java编程基础24——递归练习
  • Java方法详解
  • Linux后台研发超实用命令总结
  • MySQL数据库运维之数据恢复
  • spring-boot List转Page
  • SpringCloud集成分布式事务LCN (一)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 大数据与云计算学习:数据分析(二)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 微服务入门【系列视频课程】
  • nb
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #Java第九次作业--输入输出流和文件操作
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (pytorch进阶之路)扩散概率模型
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .gitignore文件—git忽略文件
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net6 webapi log4net完整配置使用流程
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .ui文件相关
  • //解决validator验证插件多个name相同只验证第一的问题
  • [] 与 [[]], -gt 与 > 的比较
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [Android] Android ActivityManager
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [C++数据结构](31)哈夫曼树,哈夫曼编码与解码
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明