gitlab-cicd 离线集成——springboot-cicd (非docker形式,shell形式)

目录

  • 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就直接触发了,这里也是完美成功启动了,可以正常访问

相关推荐
云和数据.ChenGuang1 天前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠1 天前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
Cosolar1 天前
不收费、不加水印、数据归你:我做了个开源的在线简历工具
后端·面试·前端框架
silvamux_1 天前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn1 天前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠1 天前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长1 天前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑1 天前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
陈随易1 天前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题1 天前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务