【实测】用土话让你明白如何做测试平台的持续部署和集成 - 3【上传gitlab后自动部署到服务器】

简介: 【实测】用土话让你明白如何做测试平台的持续部署和集成 - 3【上传gitlab后自动部署到服务器】

上节课,我们了解了如何对gitlab上传和下载,也就是git push和git pull命令。

   本节课,我们要明白的就是如何让只要gitlab有人上传代码,服务器就自动去执行git pull命令来获取最新代码并同步数据库/重启服务等命令。

   在这之前,我们都是靠手动去登录服务器,然后执行命令git pull等来实现的。


   问题:服务器怎么才能自动监控gitlab并采取设定的动作?


   答:服务器自己肯定是很难办到,所以我们借用一些插件或者第三方服务才能实现,本章节讲的是 gitlab的插件:gitlab-runner


   问题:gitlab-runner是怎么个东西?


   答:就是一个抽象的命令行工具,它分为俩部分配置。一部分在服务器上完成,另一部分在gitlab上设置。就相当于你要把gitlab和服务器找个绳子系到一起,gitlab-runner就是那根绳子,而绳子是要在俩端都系个扣的。


   问题:gitlab-runner在服务器上怎么配置?


   答:好歹是个工具,第一步肯定是下载,不过,它是命令行工具,所以你需要用一些固定命令才能下载linux:


sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

   下载好后,需要给gitlab-runner更高权限,同样用命令实现:


sudo chmod +x /usr/local/bin/gitlab-runner

   

   问题:我们平时执行git pull命令,都是需要以服务器上某个用户的身份来执行,那么gitlab-runner要用哪个用户来负责之后自动执行git pull等命令呢?


   答:gitlab-runner我们下载好了之后,要面临的就是创建一个服务器的用户,专门来负责整个自动部署事宜。所以我们手动创建一个用户,一般也叫gitlab-runner。

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

注意,这个创建命令是linux本身的增加用户的命令,包括用户的工作路径等。

当然,你要是不想从创建新的用户,也可以使用你自己当前登录的用户,那就不用创建这步骤了,直接往下走。


   问题:有了用户后,我们要怎么告诉gitlab-runner工具使用这个用户呢?


   答:gitlab-runner下载后,我们就可以使用同名命令:gitlab-runner了。

里面有专门的注册命令,使用即可:

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

注意,这段命令中,--user后要写你想用的用户名。


   问题:有了用户之后,还需要干什么?


   答:接着需要启动gitlab-runner服务了,不启动,感觉就像一个监控进程一样。用下面命令启动:

sudo gitlab-runner start


   问题:启动了gitlab-runner服务之后,还需要干什么呢?


   答:此时,我们先别着急跟着网上其他的教程或者官方教程往下走,先立马去确定一件事,就是上面给gitlab-runner使用的用户,无论是新创建的还是你原本的,这个用户有没有root权限?这个很重要。不然后面它没法自动运行各种命令。

网上有很多方式,但是我推荐这一种在Linux服务器下的,很好用:

改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL) ALL gitlab-runner ALL=(ALL) ALL

或者:

sudo gpasswd -a gitlab-runner root

大家不用犯愁,只要能让你这个用户可以使用sudo xxx来执行命令,即可,比如你可以试试sudo ls 看看报错不报错。


   问题:如果上面执行sudo gitlab-runner xxxx命令报错,说找不到gitlab-runner怎么办?


   答:这个情况大概率是你下载gitlab-runner工具的命令和我贴的不一样,一样的大多是可以用的,不过即便报错说找不到,也不要着急。你可以试试不加sudo ,直接执行gitlab-runner看看是不是可以找到。但是这种情况是要修改一下的,不然后面很多命令都必须使用sudo开头。命令很简单:

cp /usr/local/bin/gitlab-runner /usr/bin/

其实这个命令就是把用户自己bin目录下的命令gitlab-runner复制到root命令bin文件夹下而已。

执行后,再试试 sudo 开头应该就可以了。


   问题:上面全搞定后,还需要干什么?


   答:我们上面属于做好了准备工作,但是还有一个问题没有想,就是这个gitlab-runner怎么知道要监控我们gitlab仓库中哪个项目呢?可能有很多项目啊,到底监控哪个?听谁的?

   所以,服务器这边还需要最后一步,就是所谓的”注册“,这个怎么理解呢?就相当于gitlab远程仓库是一个公司总部,我们服务器就是下面的一个小分部。小分部中有员工gitlab-runner,但是需要一个能在总部说得上话的大佬作为小分部的代表,所以小分部需要有这个人。这个人在总部挂名,总部下发的各种命令等,是直接下发给他,他在服务器上指挥gitlab-runner来干活。

   注册命令如下:

sudo gitlab-runner register

    这段命令执行后,会有一堆让你根据提示选的过程。其中你只需要注意四个,其他一路回车。

   问题一:一个关于host的问题,目的是问你要通过什么域名来访问gitlab,是互联网的,还是公司内部的gitlab域名。你如果是互联网,那就输入:

https://gitlab.com/

   如果是你公司自己的,那一定也有自己的域名,总之这里是去指定位置复制的,我们别手敲。

   问题二:一个关于token的问题,每个项目有一个,靠这个就能分清具体监控哪个项目仓库了。

CCniNs000kfQ000QS0CKz

   这个token是我的,你要找你项目的token。

   问题三:一个关于让你选择一大堆命令格式的选择题,你会看到很多选项,但是注意其中有个shell选项,你直接输入"shell" 回车即可。

    问题四:一个关于给这个人起名字name的问题,这个名字比较重要,千万别忘了,比如你起叫 wqrf1

   这个名字后面我们去gitlab上设置的时候,要填入的,所以别忘了。


   问题:这个host,token去哪看?


   答:相信大家注意到了这个问题,去哪查看gitlab上项目仓库自己token呢?很简单,打开gitlab,找到这里,上面已经自动生成了,你直接复制,然后去服务器上注册时候用就可以。

image.png

问题:注册好了之后呢?

   我们可以在上面gitlab这个页面刷新看看,这个注册的wqrf1应该自动展示到这里了。再看看它是否在岗状态。如果正常在岗,应该是绿灯:

image.png

如果实现了这一步,那么恭喜你,gitlab-runner在服务器上你已经彻底配置好了,后面就等着它给你自动干活了。


   问题:如果没有配置成功怎么回事?


   答:如果这里展示的是红灯或者刷新后也看不到,那说明你的服务器没有联通到gitlab里。我们需要排查问题。


   排查步骤1:自己在本地电脑,手动ping 一下服务器地址,看看能否ping通。

   如果不通,则去服务器上关闭防火墙再试试,还不行去找运维,问他服务器什么玩意。

   如果通了,则试着在本地电脑上使用ssh 远程登录服务器,ssh 用户名@服务器地址 的命令。来看看能否远程登录,如果可以,则排除服务器问题。

   如果不可以,提示什么无权限之类的,我们就要去服务器设置了。


   排查步骤2:

   去服务器上,一般,公司提供的服务器不会有上面这堆问题。除非你是自己去xx云上买的小服务器。这种需要先改下配置。

vim /etc/ssh/sshd_config # 修改ssh服务
PasswordAuthentication yes   # 去掉这句话的注释
#PasswordAuthentication no     # 增加这句话的注释
Port 22    # 去掉这句话注释
ListenAddress 0.0.0.0     # 去掉这句话注释
sudo service sshd reload # 重载

通过上面这一套操作,我们大概率可以彻底解决这个问题。原理是新的服务器的ssh一般不让外面直接登录使用,我们给打开就行了。


   好了,本节课到这里就结束了,下节课我们讲gitlab-runner如何在gitlab上配置。

目录
打赏
0
0
0
0
27
分享
相关文章
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
告别服务器繁忙,云上部署DeepSeek
本文以 DeepSeek-R1-Distill-Qwen-32B-FP8 为例,向您介绍如何在GPU实例上使用容器来部署量化的 DeepSeek-R1 蒸馏模型。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
141027 20
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
在当今数据驱动的时代,快速部署和管理大模型成为企业的关键需求。阿里云提供了一键部署OpenWebUI+Ollama的便捷方案,支持本地大模型运行和管理。用户也可以选择连接阿里云百炼的在线模型。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
LangBot 是一个开源的多模态即时聊天机器人平台,支持多种即时通信平台和大语言模型,具备多模态交互、插件扩展和Web管理面板等功能。
558 14
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
一键部署开源DeepSeek并集成到企业微信
阿里云出手了,DeepSeek服务器拒绝繁忙,免费部署DeepSeek模型671B满血版
阿里云推出免费部署DeepSeek模型671B满血版服务,通过百炼大模型平台,用户无需编码,最快5分钟、最低0元即可完成部署。平台提供100万免费Token,支持DeepSeek-R1和DeepSeek-V3等多款模型调用,有效解决服务器繁忙问题。新手零基础也能轻松上手,享受高效稳定的API调用和自动弹性扩展功能。教程涵盖开通服务、获取API-KEY及配置Chatbox客户端等步骤,详细指引助您快速实现DeepSeek自由。
160 18
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
一键部署开源DeepSeek并集成到钉钉
DeepSeek发布了两款先进AI模型V3和R1,分别适用于对话AI、内容生成及推理任务。由于官方API流量限制,阿里云推出了私有化部署方案,无需编写代码即可完成部署,并通过计算巢AppFlow集成到钉钉等渠道。用户可独享资源,避免服务不可用问题。部署步骤包括选择机器资源、配置安全组、创建应用与连接流,最终发布应用版本,实现稳定高效的AI服务。
一键部署开源DeepSeek并集成到钉钉
在ECS上使用百炼部署满血版DeepSeek R1
本文为您介绍如何在ECS实例上部署Open WebUI,并通过大模型服务平台百炼API调用DeepSeek-R1模型推理服务。帮助您快速体验满血版DeepSeek-R1模型。

热门文章

最新文章

  • 1
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
    26
  • 2
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
    15
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    13
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
    9
  • 5
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    5
  • 6
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
    9
  • 7
    阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
    23
  • 8
    MATLAB在风险管理中的应用:从VaR计算到压力测试
    45
  • 9
    微信公众号接口测试实战指南
    31
  • 10
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    10