【实测】用土话让你明白如何做测试平台的持续部署和集成 - 4【gitlab-runner在gitlab上要如何配置】

简介: 【实测】用土话让你明白如何做测试平台的持续部署和集成 - 4【gitlab-runner在gitlab上要如何配置】

紧接上文,我们在服务器上下载并配置了gitlab-runner这个工具,并且在gitlab上项目的设置处看到亮起了绿灯:

image.png


   今天我们继续带着各种问题来思考,为什么要带着问题?因为这是在帮大家快速树立起独立思考和创新的重要步骤。


   问题1:还剩下什么没有做?

   答:我们配置好了这个gitlab-runner之后,相当于你已经找到了帮你干活的人,但是具体要干什么,你总要交代清楚吧?

   所以,我们接下来的事情就是,想办法告诉它当代码更新后,要做什么?按照我们一开始的计划,我们想让它自动去我们服务器的代码项目根目录下去执行git pull来拿到最新代码。


   问题2:我们要在哪去提前设置gitlab-runner要执行的命令?

   答:按常理说,应该是有个类似文件的东西,让我们把要执行的命令写在上面,然后gitlab-runner认识这个文件(应该需要特定文件名)。才会达到自动执行的目的。


   问题3:这个装着执行命令的文件应该起名叫什么?放在哪?在哪修改?

   答:这种时候,就不是我们瞎蒙的了,文件叫什么名这种问题很显然是人家官方规定好的,所以我们简单一百度就知道了答案;

   文件名:.gitlab-ci.yml

   文件位置:项目根目录下,和.git命令等放在一起。

       (我的项目叫for_test,点开头的文件证明是隐藏文件)

image.png

   在哪修改:既然在项目根目录,那我们可以本地修改然后git push上传,也可以在gitlab网页上在线创建和修改。

   (本地修改):

image.png

   (在线修改):    

image.png

   是的,你没看错,这个文件不需要像其他文件那样在库里修改,而直接在左侧菜单ci/cd 下的editor就可以修改,非常方便。


   问题4:这个文件的内容应该是什么?什么命令语言?

   答:文件内容应该是按照gitlab-runner官方制定的一些固定格式语法来写,不然gitlab-runner看不懂。 具体命令语言上,很显然是shell命令。当然如果你要做的事很多也复杂,更想用python的脚本语言,那么你应该提前在某个位置准备好这个.py脚本文件,然后在这个.gitlab-ci.yml 里用shell命令调用这个py文件即可:python3 xxx/xxx/xx.py

   再来看文件的具体规则,这种东西我们一百度就会有很多,官方的则更全,某些博客总结的也不错,不过对我们新手第一次常识来说还是过于复杂了,所以我这里写了个超简单的,我们先通过这个简单的写法来初步明白这个文件的格式规则:

image.png

       注意看,这个文件是靠缩进空格来分段的,目前最外层只有俩个: stages 和 test ,他们是干嘛的?可以随便起名么?

       答: 他们是固定写法,强烈建议不要随便改,当然当你学熟练了会发现很多一开始以为的固定写法都是可以设置的,只是我在你初学的时候不想让你觉得太复杂,很多问题告诉你死记硬背,你反而会觉得简单,而更有信心。

   stages 是告诉gitlab-runner要干几个大活,目前我就写了一个大活,叫test。然后下面的test是一个大活,它里面的stage就相当于名字,对外叫test。靠这个stage的值为test,上面的stages才确定是这个大活。

   那么这个大活内都要干啥呢?

   stage:test 是表明了的名字。

   only:main 是表示只监控代码分支-main,只有main的代码更新才会执行这个文件。

   script:就是我说的要在服务器上执行的一大堆shell命令了。

   tags:sss 就是让我提前设置在服务器上注册时候的那个管家,我图里叫sss,前面教程叫wqrf1 大家注意。

   了解了这个脚本的基础,我们之后就可以多写几个大活,让stages来顺序执行这些大活,比如有的是负责拉代码,有的是负责同步数据库,有的是初始化项目一些开关配置,有的是执行某个py文件来进行自测,有的是发送什么命令请求来执行自动化测试脚本等等.... 你可以给你公司产品app的项目代码设置一下,来执行你提前写好的自动化测试用例脚本。


   问题:这个文件调试和执行时机是什么?

   答:前面我们知道,这个文件当监控的分支代码或文件被改变了就会自动让gitlab-runner去执行写好的.gitlab-ci.yml文件内容。但是我们想一个事儿,就是这个文件本身也属于这个项目内的文件内容呀~ 所以就算我们其他文件都不改,只改变这个文件的内容也会触发gitlab-runner来执行。

   所以我们在gitlab网页上,在线修改.gitlab-ci.yml 然后保存,也一样可以触发才对,这样我们调试就方便了~

image.png

   注意,当你用公司的产品时,尽量单弄个分支代码来不断调试这个gitlab-runner ,千万不要在主干分支:master或main 上,不然不断的重新部署,会让公司的同事没法用主干环境正常工作了,这很重要,因为你一开始可能要调试很多次,一定会挨揍的,亲测。

   当完全调试ok了,再给改成监控主干分支。

   

   问题:这个ci/cd文件.gitlab-ci.yml 执行后的结果在哪看?

   答:在线看就行了,gitlab里:

image.png


   看上图,这里记录了每次这个文件执行的结果,有成功,也有失败,就像人生啊~

   若想看具体成功或失败的输出,来方便调试。可以直接点击passed/failed按钮进入:(也可以直接点击左侧菜单-CI/Cd-Jobs)

   

image.png

   

       点击jobs,然后再点击这个按钮,就可以看到了:

   

image.png

   看上图,那些绿色的字,是执行我们文件中设计好的命令。下面白色就是正常的输出。可以看到我打印了一句话:“开始自动部署” ,下面就真的显示了。

   然后正常的进入项目根目录,执行git pull命令,也可以正常获取最新代码和文件了。

   最后 ,自动输出了一句绿色的:job succeeded ,证明执行成功~

   失败的也会显示好红色的输出,让你明白自己菜在哪里....


   问题:有的同学发现,什么都没改,第一次可以执行成功,再次执行就会报错。

   答:这个问题我当时也遇到了,为什么第一次可以成功,之后开始失败。后来经过艰苦的查询,发现是服务器git命令工具版本太低导致,旧版本的git不支持这么新颖的插件,导致重复后缓存问题报错。

   修复的办法就是升级git。你可以直接升级,也可以卸载旧的重新下载很新的版本。这种更新问题随便百度有的是答案。

安装git 2 
#安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
#安装git
yum install git
#更新git
yum update git

 

   至此,如果你很幸运成功了,那么恭喜你可以继续深造这个CI/CD了,比如用测试平台和这个联动起来,让gitlab-runner发送一条http请求给测试平台,测试平台来执行对应某测试环境的测试用例脚本,效果贼魔幻。

相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
1月前
|
敏捷开发 Devops 测试技术
自动化测试中的持续集成与持续部署
在现代软件开发实践中,自动化测试是确保软件质量和快速迭代的关键。本文将探讨自动化测试如何与持续集成(CI)和持续部署(CD)流程相结合,以提高开发效率和软件质量。我们将分析CI/CD管道中自动化测试的最佳实践,以及如何克服实施过程中的挑战。
45 6
|
2月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
3491 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
缓存 自然语言处理 并行计算
基于NVIDIA A30 加速卡推理部署通义千问-72B-Chat测试过程
本文介绍了基于阿里云通义千问72B大模型(Qwen-72B-Chat)的性能基准测试,包括测试环境准备、模型部署、API测试等内容。测试环境配置为32核128G内存的ECS云主机,配备8块NVIDIA A30 GPU加速卡。软件环境包括Ubuntu 22.04、CUDA 12.4.0、PyTorch 2.4.0等。详细介绍了模型下载、部署命令及常见问题解决方法,并展示了API测试结果和性能分析。
1240 1
|
2月前
|
运维 监控 Devops
DevOps实践:持续集成与部署的自动化之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为提升效率、加速交付和确保质量的关键策略。本文将深入探讨如何通过实施持续集成(CI)和持续部署(CD)来自动化开发流程,从而优化运维工作。我们将从基础概念入手,逐步过渡到实际操作,包括工具选择、流程设计以及监控和反馈机制的建立。最终,我们不仅会展示如何实现这一自动化流程,还会讨论如何克服常见的挑战,以确保成功实施。
73 9
|
2月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
615 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
178 0
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
69 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
256 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
运维 Linux 开发工具
第22篇 如何部署gitLab进行开发版本控制
第22篇 如何部署gitLab进行开发版本控制