目录
-
1. 版本核查(#1-检查服务器、gitlab版本)
-
2. 资源准备(#2-准备对应的runner、Maven、git等必要资源)
-
3. 注册runner(#3-填入ip、token等)
-
4. 权限准备(#4-在runner在执行杀进程等内容上会需要输入密码,我们需要授予权限)
-
5. yml文件编写(#5-编写.gitlab-ci.yml文件)
-
6. 测试(#6-测试是否成功)
1、版本核查
1.1 核查服务器版本、系统信息
查看服务器相关信息
```
cat /etc/os-release
```

1.2 查看gitlab版本信息
进入gitlab,点击头像,点击help就可以看到对应的gitlab版本信息

2、资源准备
_我们是离线准备,所以这里下载提取下在Windows电脑上,手动去查找资源,这里推荐镜像网站:https://mirrors.tuna.tsinghua.edu.cn/_
2.1 准备gitlab-runner资源包
_我最开始是在官方的https://gitlab.com/gitlab-org/gitlab-runner/-/releases这里面去找的,但是没有我想对应的包_

后面在 https://packages.gitlab.com/runner/gitlab-runner/el/7/x86_64/Packages/g/ 这里面找到了,下载对应版本的就行了

2.2 下载 Git 及依赖 RPM 包
_这里也需要下载服务器对应版本的包,我这里也是在清华大学镜像站找的 (https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/x86_64/Packages/)_
下载git

下载依赖包




由于这里是要打包spring项目,所以你得在服务器检查是否具有java环境,以及Maven管理(同理,如果你要打包vue项目,确定有没有node的环境)
`使用java -version 检查是否有java环境`
`使用 mvn -v 检查是否有Maven管理工具`
这里我执行后,发现只缺了Maven工具,所以这里我就只安装Maven工具,缺少java环境,这里需自行去安装
2.3 下载Maven
*https://archive.apache.org/dist/maven/maven-3 大家自行在这个网站中查找所需Maven,我这里用的是3.9.9*

我们这里就先把Maven进行安装好
`cd /run/maven-repo (进入你上传的目录)
tar -xzf apache-maven-3.8.9-bin.tar.gz (解压)
echo 'export PATH=/run/maven-repo/apache-maven-3.8.9/bin:$PATH' | sudo tee /etc/profile.d/maven.sh (设置环境变量并用root权限写入配置系统)
source /etc/profile.d/maven.sh (重新加载配置)`
再次用 mvn -v 验证
2.4 准备Maven本地仓库
由于是离线状态,所以我们就直接将自己本地的Maven仓库进行打包压缩放到服务器上
在本地执行打包压缩
`mvn dependency:go-offline -Dmaven.repo.local=D:\maven\repository`
如果漏依赖,项目跑不起来,就手动在本地找一下,或者自行下载后放进去
这里我们也是进行解压好上传的Maven仓库就好
到这里资源就全部准备好了,下面是我准备的资源截图

3、注册runner
首先将安装包依赖包都上传到服务器上,可以用mobax这类便利工具,也可以使用putty进行上传
3.1 使用rpm命令解压并确认相关资源是否正常
这里你也可以一个个解压,我是图方便在同一个目录下直接解压的
`
rpm -i \*.rpm
`*确认git 环境*`
git --version
`*确认 gitlab-runner*`
gitLab-runner --version
`

3.2 注册runner
进入代码仓库,点击设置,然后点击ci/cd ,这里点击runners settings 后面的按钮expand ,往下滑后又一个链接和token,到时候注册会用


`使用命令 : gitlab-runner register 进行注册,按照提示完成就好,Tags可留空`


完成好后就可以在gitlab的代码仓库看到这个runner了

4.权限准备
使用下面命令进行编辑,类似加白名单,否则会让你输入密码导致部署失败
`visudo -f /etc/sudoers.d/gitlab-runner`
里面的内容大概如下:我会让让杀掉原始进程,然后使用脚本启动,脚本内容就是后台启动jar包的内容,还要注意一点,你的部署路径看有没有runner的读写权限,没有记得授权
`
gitlab-runner ALL=(ALL) NOPASSWD: /bin/kill, /usr/bin/pkill, /home/build/autoStart.sh`
5.yml编写
`
stages:
- deploy
deploy-job:
stage: deploy
script: # 1. 编译打包 - mvn clean package -DskipTests -Dmaven.repo.local=/run/maven-repo/repository -o
2. 进入部署目录
- cd /home/build
3. 备份旧 JAR
- |
if -f spring-back9180.jar ; then
mv spring-back9180.jar spring-back9180.jar _bak$(date +%Y%m%d%H%M%S)
fi
4. 拷贝新 JAR
- cp $CI_PROJECT_DIR/spring-module-system/spring-system-start/target/*.jar /home/build/spring-back9180.jar
5. 停止旧进程
-
sudo -n /usr/bin/pkill -9 -f "spring-back9180.jar" || echo "No old process to kill"
-
sleep 2
6. 启动新进程
-
sudo -n /home/spring/autoStart.sh
-
sleep 10
7. 验证部署
- |
if ps -ef | grep spring-back9180.jar | grep -v grep > /dev/null; then
echo "Deploy OK"
else
echo "Deploy FAILED"
echo "===== last 50 lines of catalina.out ====="
tail -50 /home/build/catalina.out
exit 1
fi
only: - master
`
6、验证
我们把yml文件写好后 commit就直接触发了,这里也是完美成功启动了,可以正常访问

