【实测】用土话让你明白如何做测试平台的持续部署和集成 - 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请求给测试平台,测试平台来执行对应某测试环境的测试用例脚本,效果贼魔幻。

相关文章
|
4天前
|
缓存 数据可视化 jenkins
推荐2款实用的持续集成与部署(CI&CD)自动化工具
推荐2款实用的持续集成与部署(CI&CD)自动化工具
|
12天前
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
15天前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
32 8
|
9天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
37 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
11天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
31 1
|
13天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
30 2
|
12天前
|
监控 安全 Devops
DevOps实践:持续集成和部署的自动化之旅
【8月更文挑战第30天】在软件开发的快节奏世界中,DevOps已成为推动项目成功的关键因素。本文将深入探讨如何通过持续集成(CI)和持续部署(CD)实现自动化,以加速开发流程、提升软件质量并确保快速交付。我们将从基础概念出发,逐步过渡到实际操作,最后讨论如何克服实施过程中的挑战。
|
14天前
|
监控 jenkins 测试技术
怎样做才能实现持续集成、部署
【8月更文挑战第28天】为了实现高效的持续集成与部署,需从技术、流程与文化三方面着手。技术上采用如Git的版本控制、自动化构建工具(Maven、Gradle)、自动化测试及持续集成服务器(Jenkins、GitLab CI/CD),并通过Docker与Kubernetes进行容器化与编排。流程层面强调团队协作、代码审查、持续部署策略以及系统的监控与反馈机制。文化层面上,提倡持续学习、改进及风险管理。这些措施共同促进了软件开发的高效与质量提升。
22 1
|
9天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
34 0
|
11天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
61 0