【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建站流程 域名注册 首先需要注册一个域名,…...
支持多种快充协议和支持多种功能的诱骗取电协议芯片
汇铭达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的包管理器。 接着安装脚手架ÿ…...
什么是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 的概念…...
Endnote参考文献序号对齐的终极解决方案
1. 为什么参考文献序号会对不齐? 很多科研工作者在使用Endnote插入参考文献时都遇到过这样的尴尬:当文献序号从个位数增长到十位数时(比如从[9]变成[10]),原本整齐排列的参考文献列表突然变得参差不齐。这个问题看似简…...
解决MathType在Word中加载失败的终极指南:从运行时错误53到MathPage.WLL缺失
1. 遇到MathType加载失败时先别慌 最近有不少朋友在系统升级后遇到了MathType无法正常加载的问题。作为一个经常和公式打交道的科研狗,我完全理解这种崩溃感——论文deadline近在眼前,公式编辑器却罢工了。最常见的两种报错是:"Please r…...
BGP路由优化:配置、故障排除与网络性能提升
BGP路由优化:配置、故障排除与网络性能提升在复杂的网络环境中,尤其是在涉及多个自治系统(AS)互联互通的场景下,边界网关协议 BGP (Border Gateway Protocol) 作为互联网的关键路由协议,直接影响着网络稳定…...
中文语义相似度计算新范式:技术演进与实践路径
中文语义相似度计算新范式:技术演进与实践路径 【免费下载链接】Awesome-Chinese-LLM 整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主,包括底座模型,垂直领域微调及应用,数据集与教程等。…...
OpenClaw权限管理:GLM-4.7-Flash敏感操作的安全确认机制
OpenClaw权限管理:GLM-4.7-Flash敏感操作的安全确认机制 1. 为什么需要安全确认机制 上周我在用OpenClaw自动整理项目文档时,差点酿成一场灾难。当时AI助手误将/Users/me/Documents/project识别为临时文件夹,准备执行rm -rf清理操作——如果…...
嵌入式C语言面试核心问题与实战技巧
嵌入式C语言面试核心问题深度解析1. 预处理指令与宏定义1.1 常量定义与类型安全#define SEC_YEAR (365*24*60*60)UL这个宏定义展示了三个关键点:使用括号确保运算顺序正确使用UL后缀防止16位系统溢出让预处理器计算表达式而非硬编码结果1.2 参数化宏设计#define MIN…...
2025年卡膜优质企业TOP榜|亲测分享实践案例
引言随着包装材料市场对功能性、环保性及定制化需求的不断提升,卡膜作为高透明、高韧性的包装材料,广泛应用于文件收纳、相册制作、资料分类、礼品包装等领域。2025年,各大卡膜生产企业在生产工艺、原材料把控、定制服务能力及交付效率等方面…...
嵌入式软件分层架构设计与RTOS抽象实践
通用嵌入式软件架构分层设计实践指南1. 项目概述1.1 系统架构设计背景在嵌入式系统开发中,随着项目复杂度提升,代码组织混乱、可维护性差成为常见问题。特别是在使用STM32、GD32等主流单片机时,缺乏合理的软件分层设计会导致以下问题…...
UniApp真机调试支付宝扫码,从‘报错’到‘跑通’的完整避坑指南
UniApp真机调试支付宝扫码:从报错到流畅运行的实战指南 第一次在UniApp中集成支付宝原生扫码功能时,我遇到了一个令人抓狂的问题——明明在模拟器上运行得好好的,一到真机调试就各种报错。经过反复尝试和查阅文档,终于找到了问题的…...
3步实现游戏ROM高效管理:RomM自托管解决方案完整指南
3步实现游戏ROM高效管理:RomM自托管解决方案完整指南 【免费下载链接】romm A beautiful, powerful, self-hosted rom manager 项目地址: https://gitcode.com/GitHub_Trending/rom/romm 游戏ROM管理是每位怀旧游戏爱好者的必修课,但面对成千上万…...
