gitlab runner 安装、注册、配置、使用(K8S部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、介绍
    • 1. 类型
    • 2. 状态
    • 3. 原理
    • 4. 部署方式
    • 5. 运行方式
    • 6. 命令使用
      • 6.1 注册指令
      • 6.2 列举运行程序
      • 6.3 验证runner是否连接
      • 6.4 注销runner
        • 6.4.1 用令牌注销
        • 6.4.2 用名称注销
        • 6.4.3 注销所有runner
    • 7. 作业演示1
      • 7.1 Gitlab创建项目并拉取到本地
      • 7.2 项目文件
      • 7.3 流程定义文件
        • 7.4 将代码推送到Gitlab
    • 8. 作业演示2
  • 三、K8S中部署Gitlab Runner
    • 1. 环境
    • 2. 安装
    • 3. 注册
    • 4. 配置
    • 5. 使用


一、介绍

Gitlab Runner作为一个开源的项目,使用Go语言编写,可运行在不同系统重
Gitlab Runner用于运行作业并将结果发给gitlab服务器
Gitlab Runner与Gitlab CI结合使用,Gitlab CI是gitlab的开源持续集成服务,用于协调作业
Gitlab Runner的版本安装时应注意与Gitlab版本尽量同步以防版本差异导致报错

1. 类型

Gitlab Runner包含三种类型,分别对应三种不同情况(或者说是作用范围)
Shared:共享类型,运行整个平台的项目的作业(gitlab)
Group:项目组类型,运行特定group下的所有项目的作业(group)
Specific:项目类型,运行指定的项目作业(project)
不同的类型有对应的token,可到对应的位置获取
区别在于左上角的名称不一样,平台-Admin Area,组-组名,项目-项目名称
平台Runner
在这里插入图片描述
组Runner
在这里插入图片描述
项目Runner
这里可以看到gitlab的url和token
在这里插入图片描述

本篇在平台类型注册runner,即 使用平台类型的token进行注册runner

2. 状态

Gitlab Runner有两种状态,locked和paused
locked:无法运行项目作业
paused:不会运行作业

3. 原理

gitlab-runner注册到gitlab,gitlab中的代码更新时gitlab就会通知gitlab-runner
gitlab-runner拉取本地最新代码后执行.gitlab-ci.yaml文件定义的脚本,具体的脚本可参考官网

4. 部署方式

gitlab-runner支持多种部署方式,如本地Windows部署、容器Docker中部署、K8S集群中以pod形式部署
本篇尝试以docker容器部署及k8s集群中部署

5. 运行方式

gitlab-runner可以选择以什么执行器来运行,如docker、kubernetes、shell等
在注册时可以选择一种执行器来指定,本篇以docker为例

注:以下说明只针对建立group组且未授权root权限的用户
由于gitlab账号并不是管理员权限,仅对group具备maintainer权限,所以gitlab-runner使用group作为绑定方式
绑定关系:gitlab–gitlab-runner–创建pod运行gitlab-runner中的stages
但是,我们安装gitlab后,使用的账号为root权限,没有权限限制,故,此步骤省略无需绑定

注:为避免注册失败或后续runner不可用,gitlab-runner与gitlab最好不要安装在相同的服务器
如果只是测试环境,可在同一台进行尝试,遇到问题再解决,一般不会出问题
本篇gitlab服务在woker2节点,runner安装的位置为master主节点

6. 命令使用

gitlab-runner命令汇总
命令均为容器内使用

6.1 注册指令

容器内注册Runner到gitlab

gitlab-runner register

6.2 列举运行程序

容器中,列举保存在配置文件中的所有运行程序

gitlab-runner list

6.3 验证runner是否连接

容器内,检查注册的runner是否可以正常连接,不能验证gitlab服务是否在使用runner

gitlab-runner verify

6.4 注销runner

容器内,注销已注册的runner

gitlab-runner unregister
6.4.1 用令牌注销

使用令牌注销已注册的runner

gitlab-runner unregister --url http://gitlab.xxxx.com/ --token xxxxx
6.4.2 用名称注销

使用名称注销,同名则删除第一个

gitlab-runner unregister --name runner名称
6.4.3 注销所有runner

直接注销所有runner

gitlab-runner unregister --all-runners

7. 作业演示1

如何使用Runner来进行项目代码的打包等作业
首先需要有一个项目代码,然后在项目代码根目录需要有一个.gitlab-ci.yml文件用来定义CICD流程
主要是这个.gitlab-ci.yml文件
模拟:

流程如下
在gitlab上创建一个项目
在本地创建一个文件夹,并将gitlab上的项目克隆或者建立连接
然后在本地项目文件夹中创建两个文件index.html和.gitlab-ci.yml
然后推送代码到gitlab

7.1 Gitlab创建项目并拉取到本地

参考:Gitlab的使用

7.2 项目文件

在项目中创建文件index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Gitlab Runner CICD Test</title>
</head>
<body>
<h1>This is a test for Gitlab Runner CICD test and only html for this project</h1>
</body>
</html>

7.3 流程定义文件

在项目根目录中创建.gitlab-ci.yml

build-job:stage: buildscript:- echo "Hello, $GITLAB_USER_LOGIN!"test-job1:stage: testscript:- echo "This job tests something"test-job2:stage: testscript:- echo "This job tests something, but takes more time than test-job1."- echo "After the echo commands complete, it runs the sleep command for 20 seconds"- echo "which simulates a test that runs 20 seconds longer than test-job1"- sleep 20deploy-prod:stage: deployscript:- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

build阶段启动一个作业,输出一段文本,test阶段并行启动两个作业,分别输出一段文本,deploy阶段启动一个作业,输出一段文本,三个阶段模拟构建、测试、部署流程

7.4 将代码推送到Gitlab

将项目推送到gitlab后,后续任意提交内容都可触发流水线执行,当然也可以手动执行,项目中的CICD,选择运行流水线即可执行

8. 作业演示2

同样的,在项目的根目录中创建一个.gitlab-ci.yml文件并填充内容

stages:- maven- build- deploymaven_job:stage: maventags:- defaultonly:- masterscript:- echo "This is the first maven job"build_job:stage: buildtags:- defaultonly:- masterscript:-  echo "This is the first build job"deploy_job:stage: deploytags:- defaultonly:- masterscript:- echo "This is the first deploy job"

三、K8S中部署Gitlab Runner

1. 环境

系统版本:Linux—centos
集群版本:k8s–1.23.0
docker版本:24.0.7
gitlab版本:gitlab/gitlab-ce:14.0.0-ce.0
gitlab-runner版本:gitlab-runner:14.0.1-ce.0

2. 安装

安装方式有多种

3. 注册

4. 配置

5. 使用

https://www.jianshu.com/p/fd00a9cc87ef
https://zhuanlan.zhihu.com/p/441581000
https://blog.csdn.net/yejingtao703/article/details/83065591

https://blog.csdn.net/zyy247796143/article/details/123842374
https://zhuanlan.zhihu.com/p/630393918
https://blog.csdn.net/qq_37084490/article/details/126478452
https://www.jianshu.com/p/0ca2174e34ad

https://www.cnblogs.com/tcy1/p/16320660.html


感谢阅读,祝君暴富!

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

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

相关文章

C++中获取成员函数地址的方法

C中获取成员函数地址的方法 文章目录 C中获取成员函数地址的方法[toc]前言方法1&#xff1a;通过联合体的共享储存机制方法2&#xff1a;通过汇编取成员函数偏移得到地址调用方法和测试案例 前言 ​ 这里我一共总结了两种目前可以说是最高效易用的方法来获取成员函数地址&…

深度学习主流开源框架:Caffe、TensorFlow、Pytorch、Theano、Keras、MXNet、Chainer

2.6 深度学习主流开源框架 表2.1 深度学习主流框架参数对比 框架关键词总结 框架关键词基本数据结构&#xff08;都是高维数组&#xff09;Caffe“在工业中应用较为广泛”&#xff0c;“编译安装麻烦一点”BlobTensorFlow“安装简单pip”TensorPytorch“定位&#xff1a;快…

探索设计模式的魅力:揭秘模版方法模式-让你的代码既灵活又可维护

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、开篇二、应用场景一坨坨代码实现存在的问题 三、解决方案模式方法结构示意图及说明用模板方法模式重构示例解决的问题 四、工作原理使用模板方法模式重写示例结构图核心结构&#xff1a;抽象类和具体实现 五、总结…

【Effective Objective - C】—— 内存管理

【Effective Objective - C】—— 内存管理 前言29.理解引用计数引用计数工作原理关闭ARC模式属性存取方法中的内存管理自动释放池保留环要点 30.以ARC简化引用计数使用ARC时必须遵守的方法命名规则变量的内存管理语义ARC如何清理实例变量要点 31.在dealloc方法中只释放引用并解…

基于深度置信网络的多模态过程故障评估方法及应用

源自&#xff1a;自动化学报 作者&#xff1a;张凯, 杨朋澄, 彭开香, 陈志文 “人工智能技术与咨询” 发布 摘 要 传统的多模态过程故障等级评估方法对模态之间的共性特征考虑较少, 导致当被评估模态故障信息不充分时, 评估的准确性较低. 针对此问题, 首先, 提出一种共性–…

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1.作用&#xff1a;Arrays.asList( )方法的作用是将数组转换成List&#xff0c;将List中的全部集合对象添加至ArrayList集合中 2.参数&#xff1a;动态参数 (T... a) 3.返回值&#xff1a;List 集合 List<T> 4.举例&#xff1a; package com…

删除windows自带输入法

ctrl shift F 搜狗简繁体切换

【第二十四课】二分图:acwing-860染色法判定二分图 / acwing-861二分图的最大匹配 ( c++代码 )

目录 二分图是什么 acwing-860染色法判定二分图 染色法 代码 acwing-861二分图的最大匹配 思路 代码 二分图是什么 学习二分图的目的就是一些题目可以简化成二分图的模型来求解。 二分图也就是&#xff1a;一个无向图顶点集&#xff0c;分成了两堆顶点(可以理解为两…

分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

Sora 和之前 Runway 那些在架构上有啥区别呢?

问&#xff1a;Sora 和之前 Runway 那些在架构上有啥区别呢&#xff1f; 答&#xff1a;简单来说 Runway 是基于扩散模型&#xff08;Diffusion Model&#xff09;的&#xff0c;而 Sora 是基于 Diffusion Transformer。 Runway、Stable Diffusion 是基于扩散模型&#xff08…

MySQL 插入10万条数据性能分析

MySQL 插入10万条数据性能分析 一、背景 笔者想复现一个索引失效的场景&#xff0c;故需要一定规模的数据作支撑&#xff0c;所以需要向数据库中插入大约一百万条数据。那问题就来了&#xff0c;我们应该怎样插入才能使插入的速度最快呢&#xff1f; 为了更加贴合实际&#…

cool Node后端 中实现中间件的书写

1.需求 在node后端中&#xff0c;想实现一个专门鉴权的文件配置&#xff0c;可以这样来解释 就是 有些接口需要token调用接口&#xff0c;有些接口不需要使用token 调用 这期来详细说明一下 什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理&#xf…

如何用AI绘画工具最好最省时省事的方法制作个性化头像框?

原文章链接&#xff1a;如何根据游戏素材制作主题头像框&#xff1f;实战教程来了&#xff01; - 优设网 - 学设计上优设 教程专区&#xff1a;AI绘画&#xff0c;AI视频&#xff0c;AI写作等软件类型AI教程&#xff0c; AI工具专区&#xff1a;AI工具-喜好儿aigc 在 APP 的…

「算法」二分查找1:理论细节

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;算法详解 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 二分查找算法简介 这个算法的特点就是&#xff1a;细节多&#xff0c;出错率高&#xff0c;很容易就写成死循环有模板&#xff0c;但…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他…

PyTorch-线性回归

已经进入大模微调的时代&#xff0c;但是学习pytorch&#xff0c;对后续学习rasa框架有一定帮助吧。 <!-- 给出一系列的点作为线性回归的数据&#xff0c;使用numpy来存储这些点。 --> x_train np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.168],[9.779], [6.1…

win32汇编获取系统信息

.data fmt db "页尺寸&#xff1a;%d",0 db "" lpsystem SYSTEM_INFO <?> szbuf db 200 dup(0) .const szCaption db 系统信息,0 .code start: invoke GetSystemInfo,addr lpsystem …

Java编程在工资信息管理中的最佳实践

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

用Java实现简单的图书管理系统

目录 1.总体框架 2.book包 Books类 booklist类 3.operation包 IO接口&#xff1a; addbooks类&#xff1a; borrowbooks类&#xff1a; delbooks类&#xff1a; returnbooks类&#xff1a; exit类&#xff1a; 4.user包 user类 Adminuser类&#xff08;难点&#…