【gitlab】gitlabrunner部署

 1、下载镜像

docker pull  gitlab/gitlab-runner:latest

2、启动gitrunner容器


 docker run -d --name gitlab-runner --restart always \
  -v /root/gitrunner/config:/etc/gitlab-runner \    ///gitlab-runner的配置目录,挂载在宿主机上方便修改,里面有config.toml配置文件 
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /localcache/mavenrepo:/root/.m2/ \
  -v /root/gitbook/books:/buildres \
  gitlab/gitlab-runner:latest

进入容器:把docker镜像库的ca.crt签名根证书挂到系统信任类库中,不然里面docker login 或者 pull 都提示证书问题: 

解决ssl客户端证书验证的问题: 
sudo cp ca.crt[这个证书可以在gitrunner启动是 挂载到容器上去] /usr/local/share/ca-certificates/
sudo update-ca-certificates

3、注册gitlab-runner的执行器到gitlab上

       gitlab-runner会负责不断轮训gitlab的任务队列,发现任务就开启执行器开始完成任务
  注册方法:
   a: 进入gitlab,项目或者项目组 然后创建一个runner,获取页面提供的待token的指令,然后进入上面启动的gitrunner容器。执行指令gitlab-runner  register --url http://gitlab.example.com/ --token t0k3nxxxxx
   b: 可以注册shell  docker k8s类型的执行器 

4、查看配置config.toml配置文件 

这个配置文件是执行器注册时生成的

格式例子如下: 
 

concurrent = 1
check_interval = 0
[session_server]session_timeout = 1800[[runners]]name = "6e216efd6d37"url = "https://47.xx.xx.22/gitlab"token = "glrt-PQzw9H8PTfrx51zeQM38"executor = "docker"[runners.custom_build_dir][runners.cache][runners.cache.s3]  //这个可以去掉,没有这种分布式缓存的话,也可以自己安装minio然后配置[runners.cache.gcs] //这个可以去掉[runners.cache.azure] //这个可以去掉[runners.docker]tls_verify = falseimage = "47.xx.xx.xx:444/base/docker:latest"   ///这个是一个配置的全局镜像,可以在.gitlab-ci.yml文件中覆盖privileged = false   //启动的docker不是特权模式disable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = false  //启动缓存volumes = ["/var/run/docker.sock:/var/run/docker.sock","/root/gitbook/books:/buildres","/cache","/root/.kube/config:/root/.kube/config","/localcache/mavenrepo:/root/.m2/"]///localcache/mavenrepo:/root/.m2/ 如果是maven执行器的话,就缓存下载的jar,避免每次都去下载//volumes 配置了docker容器执行器启动时挂载的宿主机的目录///var/run/docker.sock:/var/run/docker.sock ,配置了启动的容器可以链接到宿主机的docker-daemon进行通信,也就是说gitrunner启动的docker容器//执行器都是和gitrunner在同一个宿主机上的。 这样就不用docker in docker模式 完成后面的拉取进行、构建镜像等操作了cache 配置作用就是在启动docker容器中有一个根目录是/cache,同时docker会/var/lib/docker/volume/创建一个匿名卷,然后关联到/cache//存储缓存的文件pull_policy = ["if-not-present"]  ///镜像有的话就不下载shm_size = 0

5、缓存目录

  上面的/cache 缓存目录生成的匿名卷就是在这里,一个执行器+项目 生成一个目录

/var/lib/docker/volumes:

  runner-{runnerid}-projects-{projectid}-concurrent-{num}-cache-3c3f060a0374fc8bc39395164f415a70|c33bcaa1fd2c77edfc3893b41966cea

以3c3f060a0374fc8bc39395164f415a70结尾的文件夹中存放的就是缓存文件

    缓存文件都是最后会被压缩成cache.zip文件。

以c33bcaa1fd2c77edfc3893b41966cea8   结尾的文件夹中存放的是代码源文件

6、缓存使用说明

 1、首先gitrunner要配置缓存使用

  2、在job是配置缓存,如:

stages:- build- pushimage- deployk8s//所有的job都是自动在项目代码仓库目录,每个job执行时,就会把工程代码load工作目录
build-job:stage: buildimage: 47.xx.xx.xx:444/base/maven:3.8.1-jdk-8script:- mvn -version- mvn clean package -Dmaven.test.skip=truetags:- docker_runnercache:key: $CACHE_KEY  ///这个key的作用是,在/cache目录下创建这个含这个key相关的目录,区分下避免不同job的缓存覆盖了paths:- target/*.jar    //意思就是缓存target下面的所有jar,打包压缩成cache.zip文件,传到对应的缓存目录,如果设置了分布式缓存的话还会上传到对应的服务器,不然就是本地,就是在docker的volume上,就是上面说明的目录policy: push  ///缓存策略就是上传,也有pull就是拉取only:- main
# artifacts:  //配置工件,这个工件会自动上传到gitlab上,在页面可以下载,可以设置和这个工件的有效期
#   paths:
#     - target/*.jarpushimage-job:stage: pushimageimage: 47.xx.xx.xx:444/base/docker:latestbefore_script:- ls /script:- docker login -u $HARBOR_USERNAME -p $HARBOR_PASSWORD $HARBOR_URL- mv ./target/*.jar ./- ls- docker build -t 47.109.77.22:444/base/rocketmqui:latest .- docker push  47.109.77.22:444/base/rocketmqui:latestcache:key: $CACHE_KEY //这个key要和上一个job的key的值一致才行,不然不会自动解压缓存文件paths:- target/   ///这里就会使用之前job的缓存,上job上传到本地目录的cache.zip会自动解压到当前工作目录。就是target/*policy: pulltags:- docker_runner

  1、总结就是: 

      gitlab-cicd的缓存就是: 每个job会创建缓存,然后把缓存的文件打包压缩传到特定的目录,然后下一个job   使用了cache的话就自动下载上个job的缓存 然后解压,就可以使用了。  

   使用本地目录作为缓存的话,如果并行job的话可能就会产生覆盖的文件。

使用minio 解决分布式缓存的问题: https://blog.51cto.com/u_15098009/2612611 

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

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

相关文章

集群聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…

MySQL —— MySQL索引介绍、索引数据结构、聚集索引和辅助索引、索引覆盖

文章目录 索引概念索引分类索引数据结构种类Innodb 索引数据结构聚集索引和辅助索引(非聚集索引)聚集索引辅助索引(非聚集索引) 索引覆盖 索引概念 索引是对数据库表中一列或多列的值进行排序后的一种数据结构。用于帮助 mysql 提…

4A架构之间的关系和集成

首先我们还是来看业务架构业务域,大家都知道在业务架构里面其实有三个核心的内容,一个是价值流,一个是业务能力,一个是业务流程。 价值流往往就是顶端的流程,业务能力的分解往往是2~4级,对于详细的业务流程…

RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计

系列文章目录 探索RadSystems:低代码开发的新选择(一)🚪 探索RadSystems:低代码开发的新选择(二)🚪 探索RadSystems:低代码开发的新选择(三)&…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…

若依权限控制

springbootvue2项目中的权限控制(若依项目) 步骤: 1.登录管理员账号,为普通用户增加权限按钮 绿色部分为权限控制字符 2.在后端对应的方法上增加权限控制(这里以删除操作为例):PreAuthorize(“ss.hasPermi(‘area:store:remove’)”) 3.在前端对应的按钮上增加权限控制:v-ha…

gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突

一、将 vim 添加至右键 进入安装目录找到 vim91\install.exe 管理员权限执行 Install will do for you:1 Install .bat files to use Vim at the command line:2 Overwrite C:\Windows\vim.bat3 Overwrite C:\Windows\gvim.bat4 Overwrite C:\Windows\evim.bat…

使用 OpenAI 进行数据探索性分析(EDA)

探索性数据分析(Exploratory Data Analysis, 简称 EDA)是数据分析中不可或缺的环节,帮助分析师快速了解数据的分布、特征和潜在模式。传统的 EDA 通常需要手动编写代码或使用工具完成。现在,通过 OpenAI 的 GPT-4 模型&#xff0c…

汽车资讯新篇章:Spring Boot技术启航

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)

文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式):2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作,包括自定义样式,根据数据合并单元格等。…

【ACM独立出版|高校主办】第四届信号处理与通信技术国际学术会议(SPCT 2024)

第四届信号处理与通信技术国际学术会议(SPCT 2024) 2024 4th International Conference on Signal Processing and Communication Technology 2024年12月27-29日 中国深圳 www.icspct.com 会议亮点: 1、ACM独立出版,EI稳…

笔记01----Transformer高效语义分割解码器模块DEPICT(即插即用)

学习笔记01----即插即用的解码器模块DEPICT 前言源码下载DEPICT实现实验 前言 文 章 标 题:《Rethinking Decoders for Transformer-based Semantic Segmentation: Compression is All You Need》 当前的 Transformer-based 方法(如 DETR 和其变体&…

A037-基于Spring Boot的二手物品交易的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

EEG+EMG学习系列 (1) :一个基于小波的自动睡眠评分模型

EEGEMG学习系列:一个基于小波的自动睡眠评分模型 0. 引言1. 主要贡献2. 提出的方法2.1 工作框图2.1 正交小波滤波器组2.2 小波分解2.3 特征提取 3. 结果4. 总结欢迎来稿 论文地址:https://www.mdpi.com/1660-4601/19/12/7176 论文题目:An Automated Wave…

自动化运维-检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型等信息脚本

前言:以上脚本为今年8月1号发布的,当时是没有任何问题,但现在脚本里网络速度测试py文件获取不了了,测速这块功能目前无法实现,后面我会抽时间来研究,大家如果有建议也可以分享下。 脚本内容: #…

H.265流媒体播放器EasyPlayer.js网页直播/点播播放器WebGL: CONTEXT_LOST_WEBGL错误引发的原因

EasyPlayer无插件直播流媒体音视频播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。 EasyPlayer.js能够同时支持HTTP、HTTP-FLV、HLS&a…

OCRSpace申请free api流程

0.OCRSpace概述 OCR.Space是一款功能强大的在线光学字符识别(OCR)工具。 格式与语言支持广泛:支持多种图片格式,如 JPG、PNG、GIF、PDF 等作为输入。在语言方面,它支持英语、中文、法语、德语等20多种语言的文字识别…

Linux Kernel Programming 2

目录 书写内核框架 起手我们需要理解的是:用户态和内核态 库和系统调用 API 内核空间组件 探索 LKM(Linux Kernel Module体系) LKM 框架 内核源代码树中的内核模块 modinfo 动手!写年轻人的第一个内核模块程序 先试试看&…

机器学习基础04

目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定,堪称科研神器。 功能介绍 我们以3.5版本为例,ChatGPT学术版总共分为五个区域:输入控制区、输出对话区、基础功能区、函数插件…