【gitlab】gitlabrunner部署

news2024/11/20 13:17:08

 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 = false
    image = "47.xx.xx.xx:444/base/docker:latest"   ///这个是一个配置的全局镜像,可以在.gitlab-ci.yml文件中覆盖
    privileged = false   //启动的docker不是特权模式
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_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: build
  image: 47.xx.xx.xx:444/base/maven:3.8.1-jdk-8
  script:
    - mvn -version
    - mvn clean package -Dmaven.test.skip=true
  tags:
    - docker_runner
  cache:
    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/*.jar

pushimage-job:
  stage: pushimage
  image: 47.xx.xx.xx:444/base/docker:latest
  before_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:latest
  cache:
    key: $CACHE_KEY //这个key要和上一个job的key的值一致才行,不然不会自动解压缓存文件
    paths:
      - target/   ///这里就会使用之前job的缓存,上job上传到本地目录的cache.zip会自动解压到当前工作目录。就是target/*
    policy: pull
  tags:
    - docker_runner

  1、总结就是: 

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAM-Med2D 训练完成后boxes_prompt没有生成mask的问题

之前对着这这篇文章去微调SAM_Med2D(windows环境),发现boxes_prompt空空如也。查找了好长时间问题SAM-Med2D 大模型学习笔记(续):训练自己数据集_sam训练自己数据集-CSDN博客 今天在看label2image_test.json文件的时候发现了一些端倪: 官方…

从源头保障电力安全:输电线路动态增容与温度监测技术详解

在电力系统中,输电线路是电能传输的关键环节。然而,当导线温度过高时,会加速导线老化,降低绝缘性能,甚至引发短路、火灾等严重事故,对电网安全运行构成巨大威胁。近日,某地区因持续高温和用电负…

第02章 CentOS基本操作

2.文件基本操作【文件操作(一)】 目标 理解Linux下路径的表示方法能够使用命令(mkdir和touch)在指定位置创建目录和文件能够使用命令(rm)删除指定的目录和文件能够使用命令(ls)列出目录里的文件能够使用命令(cat,head,tail,less,more)查看文件内容理解标…

leetcode400第N位数字

代码 class Solution {public int findNthDigit(int n) {int base 1;//位数int weight 9;//权重while(n>(long)base*weight){//300n-base*weight;base;weight*10;}//n111 base3 weight900;n--;int res (int)Math.pow(10,base-1)n/base;int index n%base;return String…

工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程

一.背景 公司是非煤采矿业,核心业务是采选,大型设备多,安全风险因素多。当下政府重视安全,头部技术企业的安全解决方案先进但价格不低,作为民营企业对安全投入的成本很敏感。利用我本身所学,准备搭建公司的…

【AI人脸工具整合包及教程】Rope——重新定义你的数字形象!

引言 在这个数字时代,个人形象的重要性不言而喻。无论是社交媒体上的个人展示,还是商业活动中的品牌塑造,一个独特的形象都能让人眼前一亮。随着技术的发展,AI人脸技术逐渐从科幻走向现实,成为普通人也能轻松触及的技…

NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息: 简介: 本文讨论的背景是大型语言模型(LLMs)的自我对齐问题。传统的LLMs对齐方法依赖于昂贵的训练和人类偏好注释&am…

java CAS详解

java 中CAS是如何实现的? 在 Java 中,实现 CAS(Compare-And-Swap, 比较并交换)操作的一个关键类是Unsafe。 Unsafe类位于sun.misc包下,是一个提供低级别、不安全操作的类。由于其强大的功能和潜在的危险性&#xff0…

Gooxi受邀参加海通证券AI+应用生态大会,助力数智金融高质量发展

11月15日,由海通证券举办以”智算无界,共臻高远”为主题AI应用生态大会在上海圆满落幕。此次活动汇聚了众多人工智能领域的意见领袖、专家学者、优秀企业代表及资深投资人,共同探讨金融行业人工智能应用的前沿理论、最佳实践及发展趋势&#…

Python数据分析与可视化实验案例,所需数据已经绑定上传

大数据技术专业技能竞赛试卷 一、项目名称 农业肥料登记数据分析赛题 二、竞赛内容 赛项以大数据技术为核心内容,重点考查参赛选手数据清洗和数据分析的能力,结合Pandas和matplotlib图表展示数据。所有参赛学生在现场根据给定的项目任务,…

【竞技宝】LOL-传奇杯:姿态飞机TP绕后一锤定音

北京时间2024年11月19日,英雄联盟第二届传奇杯正在如火如荼的进行之中。昨天迎来小组赛第四个比赛日,本日一共进行了七场小组赛的对决,那么在昨日上半场的四场比赛中,登场的各支队伍都取得了什么样的表现呢?接下来小宝为大家带来小组赛day4上半场的比赛战报。 OP(宁王队) 0-1 …

qt之telnet连接目标设备在线调试功能

一、前言 在QT下使用telnet连接目标设备,进行在线命令调试,也可配合ftp或ssh使用。 telnet某些库在qt5下不可用,无法获取登录信息,只能获取到连接信息,这里我用自己的方式判断是否成功登录 二、环境 window qt5.7…

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

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

红外相机和RGB相机外参标定 - 无需标定板方案

1. 动机 在之前的文章中红外相机和RGB相机标定:实现两种模态数据融合_红外相机标定-CSDN博客 ,介绍了如何利用标定板实现外参标定;但实测下来发现2个问题: (1)红外标定板尺寸问题,由于标定板小…

即插即用篇 | YOLOv11 引入高效的直方图Transformer模块 | 突破天气障碍:Histoformer引领高效图像修复新路径

本改进已同步到YOLO-Magic框架! 摘要:摘要。基于Transformer的恶劣天气图像修复方法取得了显著进展。大多数方法通过沿通道维度或在空间上固定范围的块内使用自注意力,以减少计算负担。然而,这种折中方式在捕获长距离空间特征方面…

ITSS服务经理: 山西科技学院智能铸造现代产业学院揭牌

记者从山西科技学院传来喜讯,近日,在该院工程训练中心与智能铸造现代产业学院于山西省晋城市泽州县绿色智能铸造创新产业园隆重举行的揭牌启动仪式上,标志着学院迈入崭新篇章。应用型本科高校,作为孕育高素质应用人才的摇篮&#…

AI时代:弯道超车的新思维与实践路径

文章目录 一、AI时代的机遇与挑战二、重新认识AI三、弯道超车的新思维四、实践路径与案例分享五、AI技术的未来发展趋势六、个人与企业如何适应AI时代《AI时代:弯道超车新思维》内容简介作者简介目录 在科技日新月异的今天,人工智能(AI&#…

‘视’不可挡:OAK相机助力无人机智控飞行!

南京邮电大学通达学院的刘同学用我们的oak-d-lite实现精确打击无人机的避障和目标识别定位功能,取得了比赛冠军。我们盼望着更多的朋友们能够加入到我们OAK的队伍中来,参与到各式各样的比赛中去。我们相信,有了我们相机的助力,大家…

网页抓取API,让数据获取更简单

网页抓取的过程通常分为以下步骤,尤其是在面对静态网页时: 获取页面 HTML:使用 HTTP 客户端下载目标页面的 HTML 内容。解析 HTML:将下载的 HTML 输入解析器,准备提取内容。提取数据:利用解析器功能&#…

Java学习笔记--数组常见算法:数组翻转,冒泡排序,二分查找

一,数组翻转 1.概述:数组对称索引位置上的元素互换,最大值数组序号是数组长度减一 创建跳板temp,进行min和max的互换,然后min自增,max自减,当min>max的时候停止互换,代表到中间值 用代码实…