GitLab社区版CI/CD实现

news/2024/12/27 18:03:19/文章来源:https://www.cnblogs.com/ashet/p/18636441

准备工作:

系统环境:CentOS Linux release 7.9.2009 (Core)

安装包:gitlab-ce-11.1.1-ce.0.el7.x86_64.rpm 和 gitlab-runner-11.1.1-1.x86_64.rpm

 

CI/CD流程:

  1. 代码推送: 开发者将代码推送到GitLab的远程仓库。
  2. 触发CI/CD Pipeline: 当代码被推送到GitLab仓库时,GitLab会检测到仓库的变化,并根据仓库根目录下的.gitlab-ci.yml文件配置来触发CI/CD Pipeline。
  3. GitLab Runner: GitLab实例会将构建任务发送给注册的GitLab Runner。GitLab Runner执行job并将结果发送回GitLab。
  4. 执行Job: GitLab Runner会克隆仓库的代码到其工作目录,并开始执行.gitlab-ci.yml文件中定义的各个job。每个job是一个构建脚本,可以执行各种任务,比如编译代码、运行测试、部署应用到服务器等。

 

操作流程:

 

一、下载并安装

 

由于网络等原因,我选择清华大学镜像站下载安装包至本地(通过配置/etc/yum.repos.d/gitlab-ce.repo的方式,以yum在线安装也可以,但是遇到问题,卸载重新安装又要再次等待网络下载的时间,比较麻烦)

wget --user-agent="Mozilla" https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.1.1-ce.0.el7.x86_64.rpm
wget --user-agent="Mozilla" https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-11.1.1-1.x86_64.rpm

 

然后通过rpm命令安装即可。

rpm -ivh gitlab-ce-11.1.1-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-runner-11.1.1-1.x86_64.rpm

 

二、配置

 

GitLab就需要修改下外部访问GitLab地址

vim /etc/gitlab/gitlab.rb

 

默认GitLab外部访问地址是:external_url 'http://gitlab.example.com'

需要将其改成访问你服务器的GitLab地址,由于我没有域名只有ip,我的修改为external_url 'http://server_ip:10086'

 

修改后刷新配置gitlab-ctl reconfigure

重新启动gitlab-ctl restart

 

在操作系统防火墙放行你GitLab的端口(如果是云服务器,还需要在网络层面放行端口)

sudo firewall-cmd --add-port=10086/tcp --permanent

sudo firewall-cmd --reload

sudo firewall-cmd --list-all

 

然后浏览器访问http://server_ip:10086

页面会让你初始化密码,用户默认为root。

然后通过root账户登录,创建Group和Project,进入project的设置项。

 

在这里,获取到GitLab Runner需要使用的token,GitLab Runner通过它注册至GitLab实例。

 

 

配置GitLab Runner,这里有一个坑,GitLab Runner本身是以gitlab-runner这个用户在执行指令。

因此gitlab-runner start直接启动GitLab Runner会发现启动不起来(gitlab-runner status),通过sudo journalctl -u gitlab-runner -f可以查看启动时的相关日志,其中会提及到没有权限创建/home/gitlab-runner这个目录(这是其默认的工作目录)。

 

这是因为GitLab Runner已经安装完毕,通过cat /etc/passwd可以看到gitlab-runner这个用户,所以GitLab Runner的行为实际上是以gitlab-runner用户来执行的。

由此,我们手动创建其默认的工作目录/home/gitlab-runner,然后将这个工作目录的用户更改为gitlab-runner且允许读写权限

sudo chown gitlab-runner:gitlab-runner /home/gitlab-runner

sudo chmod 700 /home/gitlab-runner

然后启动

sudo gitlab-runner start

sudo gitlab-runner status

就可以看到terminal输出gitlab-runner: Service is running!表示正在运行了。

 

至此,我们可以将GitLab Runner注册至GitLab上了。有两种方式:通过命令(gitlab-runner register)注册;直接编辑GitLab Runner的配置文件(/etc/gitlab-runner/config.toml)来注册。

 

初次建议使用命令注册(然后对比注册前后配置文件发生的变化)

注册成功后,重启Gitlab Runner

gitlab-runner stop

gitlab-runner start

 

于Gitlab页面查看,Runner是否注册成功且为激活状态

 

三、推送代码触发Pipeline

首先新建一个项目推送至你的Gitlab服务器。

然后在项目根路径下新建一个.gitlab-ci.yml文件。Gitlab服务器会根据这个文件来触发Pipeline,使得Gitlab Runner来执行yml文件中的job。

---
stages:- simple# 输出 Hello World
# 注意这个tags标签,是和你创建的Gitlab Runner绑定的,如果你的runner不存在这个tag,那么job则不会执行
hello_world:stage: simplescript:- echo "Hello World"tags:- oh

推送代码,然后在Pipeline中查看job是否被成功执行。

 

点进去可以查看具体执行的细节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859956.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔面板解压文件无响应或需要重启才能解压

您好,关于您提到的宝塔面板在解压文件时出现无响应或需要重启才能继续解压的问题,这可能是由以下几个原因引起的。首先,我们需要了解一些背景信息来更好地解决这个问题。压缩包文件异常: 压缩包文件本身可能存在损坏或不完整的情况,导致宝塔面板在解压过程中遇到错误而无法…

1.什么是CSS

1.Cascading Style Sheet 层叠级联样式表 CSS:表现(美化网页) 字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动....2.发展史 CSS1.0 只能美化字体 CSS2.0 DIV(块)+CSS,html与css结构分离的思想,网页变得简单,利于SEO CSS2.1 浮动,定位 CSS3.0 圆角,阴影,动画…

【Spring】三级缓存解决循环依赖问题

参考地址: Spring循环依赖:https://zhuanlan.zhihu.com/p/700890658 Spring三级缓存解决循环依赖的问题:https://blog.csdn.net/Trong_/article/details/134063622================================================================== 1.什么是循环依赖?1>说白是一个或…

uni-app 设置多语言切换uni-i18n插件

安装uni-i18n插件npm install uni-i18nmain.js文件中引入并初始化VueI18n///main.js import messages from ./language/index let i18nConfig = {locale: uni.getLocale(),messages }import Vue from vue import VueI18n from vue-i18n import App from ./App Vue.use(VueI18n)…

查询数据库开始时间和结束时间字段中包括了给定时间区间的数据

表数据示例: 查询区间:2024-12-03 10:00:00 - 2024-12-06 18:00:00 mysql示例:SELECT * FROM time_test WHERE ((start_time > 2024-12-03 10:00:00 AND (2024-12-06 18:00:00 > end_time OR ( 2024-12-06 18:00:00 > start_time AND 2024-12-06 18:00:00 < e…

ASP.NET 自定义控件

创建Web Forms 用户控件 选中项目右键#新建 #Web Forms #Web Forms 用户控件代码示例<div id="footer"><div style="font-family: @宋体; font-size: 11px;"><strong >Martin Emprex Textiles(Zhongshan-China)Limited</strong>&l…

协同办公如何帮助车企抓住以旧换新市场机会

随着国家对以旧换新购车政策的进一步细化和推广,汽车市场的竞争再度升级。对于车企而言,这既是一个重要的市场增长契机,也是一次全方位提升销售运营效率的考验。通过在线协同工具,车企能够更高效地推动内部协作、优化外部销售网络,在换新浪潮中构建敏捷的销售体系。 敏捷销…

智能感知的未来:传感器融合与数字样机技术

2024年是汽车产业蓬勃发展的一年。汽车保有量的迅速攀升固然可喜可贺,然而伴随而来的交通事故频发、道路拥堵、停车困难、环境污染、能源消耗等现实问题日益凸显,严重阻碍了汽车工业的持续健康发展。 据世界卫生组织最新统计,全世界范围内每年由道路交通事故引发的人员死亡人…

SVG前端画图

SVG(Scalable Vector Graphics)是一种基于XML的标记语言,用于描述二维矢量图形,它可以在Web浏览器中进行展示。 SVG优点是:可伸缩、分辨率无损失,不管是电脑还是手机屏幕上都能够清晰地显示,支持互动和动画等特效; 缺点是:不支持复杂的渲染效果,如模糊、阴影和透明度…

uniapp项目打包为桌面应用的方法步骤

1、在控制台安装electron cnpm install electron -g 2、在控制台安装electron-packager cnpm install electron-packager -g 3、uniapp的manifest.json修改image.png运行的基础路径修改为:./ 不然打包出来会出现白屏,读取不到,因为打包出来的h5默认加载地址为/static/ 去掉启…

dropDownButton使用方法

添加DropDownButton 控件添加PopuMenu控件DropDownButton控件绑定PopuMenu控件

智能问答模型升级,通义灵码新增图片多模态问答模式等新能力,项目秒上手

通义灵码智能问答模型升级 Qwen2.5 Coder、输入交互升级并丰富上下文支持,全新支持多模态图片问答模式等。通义灵码智能问答模型升级 Qwen2.5 Coder、输入交互升级并丰富上下文支持,全新支持多模态图片问答模式等。 1. 智能问答模型升级到最新 Qwen2.5 Coder 智能问答升级到最…