gitlab-runner 三种runner创建和和使用
gitlab-runner 的创建和使用
(一)runner使用背景
对于我们项目开发来说,为了防止主项目被污染,在多人协作开发的时候,要fork一个子项目到自己的工作目录下,切分支然后进行修改之后,再从当前项目中提一个merge request到主项目中,主项目merge负责人觉得没问题的时候,再进行主项目分支和合并。
对于一个开发小组来说,利用gitlab的CI CD帮助我们做代码风格的检查,镜像的打包是一件非常方便的事情。而想通过使用CI CD的话,则需要配置runner。一般来说,我们都会配置一个公共的runner来供一个开发小组去使用。
而在新人加入一个用户组根据主项目fork出来的项目的时候,并没有看到主项目所配置的runner。需要给新人赋予主项目的maintainer权限时候才能看到对应的runner,并且回收掉maintainer权限时候runner依然存在,不影响后续使用。对于这种runner的配置方式感到繁琐且不符合规范,maintainer权限不能够随便赋予他人,而应当赋予开发者的权限。这里探讨有没有一种规范且方便的赋予runner的方法。
(二)runner使用需求
- 配置的runner希望能够被所有人使用,因为涉及到代码风格检查,镜像打包上传等公共操作
- 方便配置
(三)三种runner类型
官方描述:https://docs.gitlab.com/ee/ci/runners/runners_scope.html
- Shared runners are available to all groups and projects in a GitLab instance.
- Group runners are available to all projects and subgroups in a group.
- Specific runners are associated with specific projects. Typically, specific runners are used for one project at a time.
1. Shared Runners
分析:
shared Runners 是作用于整个gitlab的项目的,所以要gitlab的admin权限来进行配置注册
Gitlab 之 mac 安装 gitlab : https://juejin.cn/post/6844903984554049544
shared runners
是gitlab 管理员统一配置的runner,只要你的项目是在当前的gitlab,就可以使用shared runner
配置:
- 首先我们先注册两个用户,来模拟我们的实际开发中的两个对象,分别代表领导(leader)和员工(employee)
gitlab中注册的用户需要我们在管理员端进行审核才能够登陆,首先我们先去设置一下管理员的密码。如果已经设置可以直接去第三步。
# 本地起的直接执行命令,docker起的要先进入容器再执行命令 > gitlab-rails console -e production # 接下来会进入一个终端页面进行操作,可能要稍等一会 >> u=User.where(id:1).first # 选择root用户 >> u.password = "12345678" >> u.password_confirmation = "12345678" >> u.save! # 出现true则表示成功
登陆授权
点击
menu
进入admin管理页面这里可以看到我们刚刚申请注册的用户
点击允许用户
runner注册
点击
runner
注册runner(如果不会注册runner,请看文章最下面)leader创建用户组和项目
此时我们登陆leader用户创建一个用户组,并且在用户组下面创建一个项目
再添加员工employee进入用户组里面,这样employee就可以看到这个项目,我们赋予员工developer权限
点击查看刚刚创建的项目,查看runner,可以看到shared runners已经存在了
employee fork项目
我们再登陆employee用户查看项目,可以看到目前我们的权限是develpoer权限
按照开发规范流程,fork项目到自己的工作目录下,进行查看
我们查看一下runner,可以看到已经存在一个shared runners了
2. Specific Runners
分析:
specific runners是最特殊的runner,是配到我们具体项目中的,但是可以选择是否让runner锁定项目,来达到和其他项目做到共享runner的目的
配置:
specific runners是在自己的fork出来的项目中进行配置注册的,例如我们刚刚fork出来的项目为例子,这里会有一个URL和token,填写这里面的信息即可注册。(如果不会注册runner,请看文章最下面)
在配置runner之后编辑,取消runner锁定项目,临时给新人赋予maintainer权限,此时新人能够看到runner存在,点击enable for this project,撤回主项目maintainer权限之后,runner依然存在(目前我们使用的就是 Specific Runners )
3. group runners
分析:
group runner 可见需要满足两个条件
- 用户在用户组里面
- 项目在用户组里面
如上图所示,一个用户组里面拥有``zhangsan、
lisi、
wangwu等用户,注册有
group runner还有一个项目
group/project A`
在此项目下的所有用户在``group/project A项目下都能看到
group runner(前提是用户拥有
group/project A的**所有者权限**,即能看到项目的setting,其实赋予developer权限的话,应该也是能够使用runner的,只是不能设置而已)。对于group用户组下
zhangsan来说,对于
project B即使拥有
project B的所有者权限,也不能看到
runner `(这一点很容易理解)。
根据我们的开发规范来说,用户组里的人想要修改项目,则要先从主项目中fork一份到自己的工作目录下,如下图所示
但是这样以来的话,fork出来的的project A
就不在group用户组下了,即fork出来的子项目是一个和原项目无关的项目(priject ID也不一样),当然也就看不到我们想看到的runner了。想要通过这种方式让所有人看到同一个runner不可行
配置:
group runners配置则是在用户组里面配置的,配置的条件就是你必须要有用户组的所有者权限,我们这里进入leader用户,进行配置。
(四)runner注册
1、GitLab-runner安装
(1)linux安装
安装GitLab runner地址:https://docs.gitlab.com/runner/install/ 上面安装到不同操作系统的教程,我的是debian虚拟机。
#Replace ${arch} with any of the supported architectures, e.g. amd64, arm, arm64
#A full list of architectures can be found here https://gitlab-runner-uownloads.s3.amazonaws.com/latest/index.htmlcurl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_${arch}.deb"
这个是官网的示例代码,我们要去到 https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html 这里面找到我们对应的操作系统版本,我的是这个
下载下来之后就是安装了,安装也很简单,对应自己下载的版本就好了
dpkg -i gitlab-runner_<arch>.deb
输入gitlab-runner出现如下信息,即安装完成
(2)mac安装
官方教程:https://docs.gitlab.com/runner/install/osx.html
brew install gitlab-runnerbrew services start gitlab-runner
2、GitLab-runner注册
我们打开gitlab网站,找到
在终端输入命令sudo gitlab-runner register
(一定要运行在root权限下)按照提示输入对应的信息
注册完成之后,页面上就应该出现一个runner了,类似于这种
有时候runner会出现假运行状态,即CI任务一直处于pending状态。这时候去runner的机器上面执行命令gitlab-runner run
即可。
完结撒花!!
gitlab-runner 三种runner创建和和使用相关推荐
- 使用三种方式创建Class字节码类文件对象
/*** 使用三种方式创建Class字节码类文件对象** @author silence*/ public class Demo1 {public static void main(String[] ...
- 十分钟,学会使用js三种方法创建本地json数据文件
前言 在干业务时,需要得到一份全国省市到街道的区划数据,刚好业务中连接了高德地图,高德地图又提供了区划的api,这下只需要把数据写到json里了.什么!你说你还不会用js创建json文件?没关系,只需 ...
- spring配置详解-三种对象创建方式_
新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...
- Spring三种对象创建方式
1.创建方式1:无参构造 我们先创建一个User类: public class User {private String name;private int age;public User() {Sys ...
- 常用的三种数据库创建存储过程并解析json
此文章包含MySQL.Oracle和Sql Server这三种数据库的创建json格式入参并解析的主子表存储 文章目录 此文章包含MySQL.Oracle和Sql Server这三种数据库的创建jso ...
- 多线程初探:三种方式创建多线程详细示例
多线程即在同一时间,可以做多件事情. 创建多线程有3种方式,分别是继承线程类,实现Runnable接口,匿名类 一:线程概念 首先要理解进程(Processor)和线程(Thread)的区别 进程:启 ...
- Go三种方式创建赋值map
var与冒号相等,有了var就不用有冒号,有冒号就不用有var: package mainimport ("fmt" )func main(){// 方式一 :原生普通方式var ...
- 三种动态创建元素区别
- maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...
最新文章
- Ubuntu系统---安NVIDIA 驱动后 CUDA+cuDNN 安装
- android 图片横竖判断_Android横竖屏切换及其对应布局加载问题详解
- 意识到自己的无知这就是进步
- 数理统计-5.2 样本数据的整理和显示
- 如何在支付宝成为增加个人服务器,支付宝支付,服务器如何生成支付订单
- 样本期望的期望 总体期望_您所在领域的人才期望开放
- oracle10g静默升级,Linux下静默安装,升级和删除Oracle10g客户端
- android:videoView
- 手机窃取PC信息,APT基础。
- c# 存储图片到oracle,c# winform 读取oracle中blob字段的图片并且显示到pictureBox里 保存进库...
- 数据仓库中的慢变化维度和快变化维度
- SpringCloud面试题及答案(2021年SpringCloud面试题大全带答案)
- 中钰睿泓分享:设计LOGO的思路和流程
- 如何在ant 的表单Form.Item下获取自定义表单元素的值
- LeetCode题目笔记——292. Nim 游戏 (脑筋急转弯C++/Python)
- 瑞利信号公式(级联信道,多信道之和,多个瑞利信号之和,概率密度函数)
- Xcode更新的那些事儿
- K8S使用Ceph RBD作为后端存储
- 计算机在生活中的应用论文2000字,浅议计算机在生活中的应用论文(2)
- c语言程序设计P320,《C程序设计》作业内容