当前位置: 首页 > news >正文

【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 

相关文章:

【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.…...

Flink监控checkpoint

Flink的web界面提供了一个选项卡来监控作业的检查点。这些统计信息在任务终止后也可用。有四个选项卡可以显示关于检查点的信息:概述(Overview)、历史(History)、摘要(Summary)和配置(Configuration)。下面依次来看这几个选项。 Overview Tab Overview选项卡列出了以…...

Ribbon 入门实战指南

Ribbon 是 Netflix 开发的一个开源项目,用于实现客户端负载均衡功能。它在微服务架构中广泛使用,并且是 Spring Cloud 生态中的重要组成部分。本文将带你从基础入门,逐步掌握如何在 Spring Cloud 项目中使用 Ribbon 实现客户端负载均衡。 1 负…...

uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)

一、问题描述 在使用uniapp进行微信小程序开发时,经常会遇到包体积超过2M而无法上传: 二、解决方案 目前关于微信小程序分包大小有以下限制: 整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M) 单个…...

【百日算法计划】:每日一题,见证成长(026)

题目 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。 * * 示例 1: 输入: “32X2” 输出: 7 import…...

【大模型】prompt实践总结

文章目录 怎么才算是好的prompt设计准则基本原则精炼原则(奥卡姆剃刀准则)具体原则真实操作技巧指定角色增加fewshots列表化代码化强调需求真实迭代大模型优化情形任务的定义和评估标准似乎可以再明确一下出现了一些之前没有考虑过的特殊情况,可以重新组织语言优化Prompt来处…...

在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】

在Qt(以及C)中,& 和 * 是两个至关重要的符号,它们用于处理引用和指针。我们将逐个解释这两个符号,并提供简单示例来说明它们的用法。 1. 引用(&) 定义: 引用是一种别名,它不…...

本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程

文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…...

Ubuntu常见命令

关于export LD_LIBRARY_PATHcmake默认地址CMakelists.txt知识扩充/home:挂载新磁盘到 /home 子目录 关于export LD_LIBRARY_PATH 程序运行时默认的依赖库的位置包括lib, /usr/lib ,/usr/local/lib 通过命令export LD_LIBRARY_PATHdesired_path:$LD_LIBRARY_PATH追加…...

网络安全领域的最新动态和漏洞信息

网络安全领域的最新动态和漏洞信息涉及多个方面,以下是对这些信息的详细归纳: 一、网络安全领域最新动态世界互联网大会乌镇峰会召开2024年11月19日至22日,以“拥抱以人为本、智能向善的数字未来——携手构建网络空间命运共同体”为主题的202…...

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣,可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型,管理全周期AI工作流,选择下面的云平台以开始使用昇思MindSpore,获取安装命令,安装MindSpo…...

每日OJ题_牛客_天使果冻_递推_C++_Java

目录 牛客_天使果冻_递推 题目解析 C代码 Java代码 牛客_天使果冻_递推 天使果冻 描述: 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻,但她想把最好吃的果冻留到最后收藏。天使想知道前 x个果冻中,美味…...

独立站干货:WordPress主机推荐

WordPress作为全球最受欢迎的独立站建设平台,提供了灵活性和强大的功能,使得建站变得简单而高效。本文将为您详细介绍WordPress建站的流程,并推荐几款实测后觉得好用的主机商。 WordPress建站流程 域名注册 首先需要注册一个域名&#xff0c…...

支持多种快充协议和支持多种功能的诱骗取电协议芯片

汇铭达XSP15是一款应用于手持电动工具、智能家居、显示器、音箱等充电方案的大功率快充协议芯片,支持最大功率100W给设备快速充电,大大缩短了充电时间。芯片支持通过UART串口发送电压/电流消息供其它芯片读取。支持自动识别连接的是电脑或是充电器。支持…...

Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案,内容包括代码示例、原因分析以及最佳实践建议。 1. 静态变量导致的内存泄漏 静态变量的生命周期与应用进程一致,如果静态变量持有了对 Activity 或其他大对象的引用,就可能导致内存泄漏…...

MyBatis Plus中的@TableId注解

TableId 注解用于将某个成员变量指定为数据表主键,以下为使用示例: import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lo…...

java基础概念33:常见API-Objects工具类

一、使用场景 二、成员方法 2-1、equals方法 源码: 2-2、isNull方法、nonNull方法 三、小结...

脚手架vue-cli,webpack模板

先安装node.js,它是服务器端,用于给页面提供服务。前端学习不需要会node.js,只需要学会node.js衍生出来的npm命令即可。 npm 是node.js的一个工具,作用是进行包管理,npm是node.js的包管理器。 接着安装脚手架&#xff…...

什么是React Native?

写在前面 React Native (RN) 是一个由 Facebook 开发的开源框架,用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程,使得开发者可以更快速、更高效地构建…...

Three.js LOD(Level of Detail)通过根据视距调整渲染细节的技术

在 Three.js 中,LOD(Level of Detail)技术是一种通过根据视距调整渲染细节的技术,旨在提高渲染性能并优化用户体验。LOD 技术尤其在处理复杂场景或高多边形模型时显得尤为重要。在这篇博客中,我们将详细介绍 LOD 的概念…...

Vulnhub靶场案例渗透[12]-Grotesque: 1.0.1

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 目录扫描4. 敏感信息获取5. 反弹shell6. 权限提升 一、靶场搭建 1. 靶场描述 get flags difficulty: medium about vm: tested and exported from vi…...

招聘和面试

本篇内容是根据2019年4月份#82 Hiring and job interviews音频录制内容的整理与翻译 小组成员 Mat Ryer、Ashley McNamara、Johnny Boursiquot 和 Carmen Andoh 讨论了受聘、雇用和工作面试的过程。如果人是团队中最重要的部分,我们如何选择与谁一起工作&#xff1…...

Gin 框架入门(GO)-1

解决安装包失败问题(*) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.…...

LeetCode:700. 二叉搜索树中的搜索

目录 题目描述: 代码: 题目描述: 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3…...

用邻接矩阵实现图的深度优先遍历

问题描述 给定一个无向图,用邻接矩阵作为图的存储结构,输出指定顶点出发的深度优先遍历序列。在深度优先遍历的过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问。 输入描述 第一行输入三个正整数&#…...

vue2中实现token的无感刷新

后端配置 设置Token过期时间:在后端(如服务器或网关)配置access_token和refresh_token的过期时间。通常,access_token的过期时间较短,而refresh_token的过期时间较长。提供刷新Token接口:后端需要提供一个…...

无需Photoshop即可在线裁剪和调整图像大小的工具

Bitmind是一个灵活且易于使用的批量图像本地化处理器,经过抓包看,这个工具在浏览器本地运行,不会上传图片到服务器,所以安全性完全有保证。 它可以将图像调整到任何特定尺寸,并在必要时按比例裁剪。 这是一个在线工具…...

云安全之法律和合规

0x00 前言 本文主要内容是从法律,合同,电子举证,以及合规和审计这五个部分来记录一下相关的云安全内容 0x01 法律 受法律约束的影响因素 云服务所在的地区云用户所在的区域数据主体所在的区域 GDPR:通用数据保护法案&#xf…...

倒计时功能分享

今天想要分享的是一个面试题,也是一个我们在项目中常用的功能:倒计时。 首先我们在写倒计时的时候必须要考虑到是:准确性、性能。接下来我们一步一步实现这个完美地倒计时功能。 setInterval 先来简单实现一个倒计时的函数: func…...

【论文分享】使用多源数据识别建筑功能:以中国三大城市群为例

建筑功能对城市规划至关重要,而利用多源数据进行建筑功能分类有助于支持城市规划政策。本研究通过分析建筑特征和POI密度,识别了中国三个城市群的建筑功能,并使用XGBoost模型验证了其在大规模映射中的高准确性和有效性。研究强调了建筑环境对…...

wordpress 自定义url/近三天的国内外大事

一、前言在日常生活中&#xff0c;我们经常需要把一些文件和目录打包压缩成一个文件。在 Windows 下&#xff0c;我们可以使用 WinRAR 来完成。而在 Linux 下&#xff0c;我们则可以使用系统自带的 tar 工具来完成。二、创建压缩包命令基本用法tar -c [选项] -f <打包后的文…...

做一个兼职app多少钱/seo排名工具有哪些

整理 | 孙胜 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; FTP是一种国际公认的文件传输协议&#xff0c;协议最初标准是于 1971 年的FRC 114转化而来&#xff0c;已有半个世纪历史。随着Mozilla浏览器关闭了Firefox浏览器的FTP协议&#xff0c;浏览器舍弃FTP功…...

汉口做网站/怎么在百度做免费推广

目录 一、单选题(共25题,每题2分,共50分) 二、判断题(共10题,每题2分,共20分)...

响应式网站制作公司/合肥百度竞价推广代理公司

PMP指的是项目管理专业人士资格认证&#xff0c;由项目管理协会和PMI 发起&#xff0c;严格评估管理项目人员知识技能是否具有高品质的资格认证考试。通过PMP认证&#xff0c;不仅提升项目经理的项目管理水平&#xff0c;也直接体现项目经理的个人竞争力。 PMP对考纲进行了重大…...

wordpress修改主题版权/全球十大搜索引擎入口

jacoco统计覆盖率最佳实践jacoco总结Jacoco安装代码覆盖率介绍行覆盖分支覆盖方法覆盖覆盖率的误区代码覆盖率意义覆盖率报告解析启动jacoco agent进行插桩**单元测试offline模式&#xff1a;**mvn命令增加参数在pom文件中添加jacoco插件**功能测试on-the-fly模式**&#xff1a…...

智能建站实验报告/搜索引擎下载入口

近日和同事探讨到关于 Memcached 本身是否是可以实现分布式和负载均衡的问题有些争论&#xff0c;不妨认真探讨一下。 Memcached 的自我定位 在 Memcache 的官方主页的 “What is Memcached” 部分中&#xff0c;它将自己定位为一个“开源的&#xff0c;高性能的&#xff0c;分…...