Gitlab 之 Windows 环境进行 tomcat 持续集成部署,包含项目打包,备份,部署以及问题
发布日期:2021-06-30 18:35:00 浏览次数:3 分类:技术文章

本文共 2127 字,大约阅读时间需要 7 分钟。

问题:

之前在用 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:

PS:可能有人会遇到部署了 gitlab-runner 后怎么跑都报 9009 错误,这个解答在上面这个文章的最下面

注册 tomcat 为服务

# 进入 tomcat 的 bincd D:\tomcat7\bin# 注册 tomcat 为 服务# 格式:service install 服务名# 这个服务名是自定义的,我这是 tomcat7,所以干脆就叫这个service install tomcat7# 启动/停止服务net start/stop tomcat7

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

.gitlab-ci.yml:

stages:- buildbuild-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 使用:

结果:

转载地址:https://linjinp.blog.csdn.net/article/details/100191450 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Git 克隆指定分支的代码
下一篇:Oracle 让指定数据排在最前面

发表评论

最新留言

很好
[***.229.124.182]2024年04月17日 06时07分33秒