天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 一、介绍
- 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
感谢阅读,祝君暴富!