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

问题:

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

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

思路:

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

  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 安装,配置文件编写与使用

结果:

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

你可能感兴趣的:(#,Git/GitLab)