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

相关推荐
oicola1 小时前
【运维】CI/CD是什么,合格的规范应该怎么设置
运维·ci/cd
Nebula_g1 小时前
JavaSE加强:线程Thread(线程安全重点)
java·开发语言·jvm·算法·javase·技术栈
令狐少侠20111 小时前
centos7 下,使用docker 部署IOT 调试平台,ThingsBoard 并完美启动
java·spring boot·iot
JAVA面经实录9171 小时前
Java高级后端 · 全套面试通关手册(线上故障排查)
java·jvm·面试
IT_Octopus1 小时前
【零基础入门 LLM 开发 · Day 11】:ChatOpenAI vs init_chat_model——一行换供应商
java·前端·javascript
根目录下的猫1 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
Wang's Blog1 小时前
Java 中间件之 RabbitMQ 快速入门: MQ 常见技术选型对比
java·中间件·java-rabbitmq
蜗牛互联网1 小时前
Java Agent 工具调用的 allowlist、参数校验与调用预算
java·开发语言·人工智能·后端·oracle
用户813267933251 小时前
行情数据晚到几秒,会让量化策略失去优势吗?从信号时间到回测偏差
后端·github·api