问题:
之前在用 Gitlab 在 windows 上做持续集成时候遇到了问题,也有问一些认识的人,但是他们都表示没听懂没遇到过。
我之前的部署流程:Gitlab-runner 拉取代码 ➡ Ant 打包 ➡ 项目复制到 tomcat 的 webapps 下面 ➡ 最后 startup.bat 启动
结果:Gitlab 的任务无法完成,会一直在进行,可能是因为直接去启用了 startup.bat,由于 startup.bat 启动了项目就不会结束的原因,导致 Gitlab 任务无法结束,最后结果当然只能任务失败,可以看到强行跑了 1h,然后失败了
思路:
由此可见传统的部署方式显然是不行的,在偶然下发现了一个有趣的东西解决了我的难处,因此只能使用新的方法来部署
- 把 tomcat 注册为 windows 的一个服务
- 停止 tomcat 服务
- 备份历史项目(我这里的备份是:备份的目录 ➡ 当天的日期 ➡ 项目名-备份时间.war)
因此打包每次历史我都做了保留,按需修改 - Ant 打包项目(为啥不是 maven,因为项目真的太老了没有 maven,按需修改)
- 打包项目放到 webapps 下面
- 启动 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 安装,配置文件编写与使用
结果:
转载:https://blog.csdn.net/qq_37143673/article/details/100191450
查看评论