原先的项目,在本地跑通后,需要开发人员手动打包。然后上传到服务器,重启项目服务。这部分的工作非常的繁琐。好在有了jenkins或者gitlab-ci这些自动化的工具。只要配置好。之后的项目开发就不用操心众多的繁琐部署步骤了。
由于开发习惯问题,我的项目正式环境并不是linux,并且学习gitlab过程中,发现大多数的文章都是以linux系统为例,所以我主要研究在windows server中的实现。算是补全生态吧。
一. 部署gitlab
我在腾讯云上买了一年80块的最低配置的linux云服务器做个人鼓捣用。当然阿里云也可以了,甚至本地的电脑也能当作gitlab的服务器。
部署方式相对简单,在宝塔面板上直接搜索 gitlab下载安装,我安装的版本是8.8.5(注意,后续的gitlab-runner.exe需要下载1.x版本,和gitlab配对,不然总是会注册失败)
部署完进入gitlab网址,注册号账号后,新建一个项目vue,点项目的设置,保存这两个值。
二.安装gitlab-runner
下载安装包 1.10.4 (注意:最新版本和gitlab 8.8.5不匹配,要下载较老的版本)https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.10.4/binaries/gitlab-ci-multi-runner-windows-amd64.exe
用远程工具进入正式项目的服务器。在C盘新建Gitlab-Runner文件夹,把安装包改名为gitlab-runner.exe放进去(不改也行,主要是原名太长了)。
1.打开cmd,cd到Gitlab-Runner。
2. 执行 .\gitlab-runner.exe install
3.执行 .\gitlab-runner.exe register 。这时候会提示你填写链接和授权码,把上面保存好的数据依次填进去。
4. 选择执行器的环境,由于我的项目没有用到docker,所以选的是shell。 还有提示你填写标签和备注什么的,这个随便填,后续也可以在生成的toml文件中改。
5. 启动runner : ./gitlab-runner.exe start
三.编写配置文件
这时候回到gitlab网页,项目中应该就能看到有一个可用的runner了。
vue项目
首先项目服务器要先安装node/npm等工具用来打包,最好和开发环境的版本号一致,不然可能出奇怪的问题
接下来在vue项目的目录中新建 gitlab-ci.yml文件
填写以下内容:
build:
stage: build #标签,表示当前流水线处于哪个阶段
only:
- master #只有推送到master分支才执行
script:
- npm run build:prod #编译
- $CONFIG_PATH="C:\test\admin"
- $TRUE_FALSE=(Test-Path $CONFIG_PATH)
- echo $TRUE_FALSE
- if($TRUE_FALSE -eq "True"){ remove-Item -Recurse -Force $CONFIG_PATH }
- Copy-Item admin C:/test -Recurse -Force #把打包好的文件转移到项目所在的文件夹中
然后推送git到master分支。在gitlab页面上可以上看到runner的执行情况。一般情况下,就能正常执行了。
springboot项目
在springboot项目的目录中新建 gitlab-ci.yml文件
填写以下内容:
variables:
TARGET: ruoyi-admin/target/ruoyi-admin.jar #定义一个变量,jar包的路径,方便后面用
build: #编译
stage: build
only:
- master
script:
#-P prod 是打包的时候识别 application-prod.yml文件,如果没有区分prod/local/dev之类,可以不写
- mvn clean package -P prod #执行maven打包,
- $CONFIG_PATH="C:\test\ruoyi-admin.jar"
- $TRUE_FALSE=(Test-Path $CONFIG_PATH)
- if($TRUE_FALSE -eq "True"){ remove-Item -Recurse -Force $CONFIG_PATH }
#把打包好的文件转移到项目所在的文件夹中
- Copy-Item ruoyi-admin/target/ruoyi-admin.jar C:/test -Recurse -Force
- cd C:/dali
- C:/dali/run.bat #重启服务
四:踩坑
1.windows里面 执行 bat文件或者指令java -jar xxx.jar 的话。gitlab-runner会把启动的jar服务当作运行中的runner程序,所以状态一直是running运行中。如果推下一次的话,永远在排队。所以要换一种部署的方式。
使用winsw把jar注册为服务。
run.bat里面的语句改为
winsw.exe restart
2.git提交spring-boot报
The term 'mvn' is not recognized as the name of a cmdlet
原因是maven没有安装,安装完,配置到系统环境变量后。重启gitlab-runner.exe,再次提交。
3.git提交vue项目报
The term 'git' is not recognized as the name of a cmdlet, function, script file, or operable program
是因为git没有安装
4.gitlab中的runner控制台出现乱码 � 这类,要到服务器的控制面板设置编码为utf-8。设置完重启就可以了。