Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在CI构建过程中减少码头拉拔时间?

如何在CI构建过程中减少码头拉拔时间?
EN

Stack Overflow用户
提问于 2019-05-23 20:14:33
回答 3查看 796关注 0票数 3

我在Kubernetes集群上使用GitLab Runner来运行CI作业。我想让构建工作运行得更快。

为了使它们更快,我重用了以前构建的Docker映像(标记为latest)。构建时间已经减少,但是现在的瓶颈是pull命令,它占用了大约60-70%的时间。

这里是.gitlab-ci.yml的片段

代码语言:javascript
运行
AI代码解释
复制
build:sheets:
  stage: build
  image: docker:stable
  services:
    - docker:dind
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin
  script:
    - docker pull $SHEETS_LATEST || true
    - docker build --cache-from $SHEETS_LATEST --tag $SHEETS_TAG --tag $SHEETS_LATEST .
    - docker push $SHEETS_TAG
    - docker push $SHEETS_LATEST

我使用Gitlab,因此pull命令需要集群和注册表之间的大量通信。

我有几个问题要问:

  1. 是否值得在集群上部署自己的坞注册中心以节省每次构建几分钟的时间?
  2. 是否有一种方法可以将图像保存在集群的某个位置,而不是每次从注册表中提取?
EN

回答 3

Stack Overflow用户

发布于 2019-05-24 03:04:43

在管道中快速生成码头图像有几种方法。

  1. 码头工人(码头除外)

在这里,您必须在构建容器中挂载主机的/var/lib/docker.sock。它是脆弱的。但还是太快了。

  1. DIND (码头码头)

在这里,您可以使用dind映像,它具有docker和守护进程。它不与主机的停靠守护进程通信。整个构建过程将发生在吊舱内。不是100%安全,而是更快。

  1. Kaniko,Makisu,Buildah

这些都是无守护进程的下一代映像构建工具,它不依赖于Docker守护进程。比DOOD和DIND更安全,也更快,并且支持缓存。

票数 1
EN

Stack Overflow用户

发布于 2019-05-24 02:40:27

您可以通过将持久卷挂载到/var/lib/docker内运行带有Docker守护进程的专用pod。之后,您将使用命名为"docker“的服务来公开这个吊舱。之后,在CI作业中定义环境变量"DOCKER_HOST=tcp://docker“。

这样,所有的构建和映像都存储在运行在专用荚中的Docker守护进程中。您不会浪费时间拉图像,而且您的构建运行更快,因为Docker构建缓存。

只需记住,监测磁盘空间的使用在持久卷和触发“对接系统修剪”定期。

票数 0
EN

Stack Overflow用户

发布于 2019-06-04 06:50:33

Gitlab共享运行程序没有您以前的映像(正如您注意到的)。所以你的选择要么像你正在做的那样拉着它,要么和你自己的跑步者一起去。上一次我查看的时候,您可以在gitlab kubernetes集成页面上安装kubernetes运行程序,所以我不得不部署自己的运行程序。

下面是一个部署,它创建4个运行程序(todo:找出自动标度)并将它们注册为postStart事件。您需要从您的项目或组(cd)的设置/cicd页面获取注册令牌。您将不得不从同一页面禁用共享运行程序。

代码语言:javascript
运行
AI代码解释
复制
kind: Deployment
metadata:
  name: gitlabrunner
  labels:
    app: gitlabrunner
spec:
  replicas: 4
  selector:
    matchLabels:
      app: gitlabrunner
  template:
    metadata:
      labels:
        app: gitlabrunner
      name: gitlabrunner
    spec:
      containers:
      - name: gitlabrunner
        image: gitlab/gitlab-runner
        volumeMounts:
        - name: dockersock
          mountPath: "/var/run/docker.sock"
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "gitlab-runner register -n --url https://gitlab.com/ --registration-token [YOUR_REGISTRATION_TOKEN] --executor docker --description 'My Docker Runner' --docker-image 'docker:stable' --docker-volumes /var/run/docker.sock:/var/run/docker.sock"]
      volumes:
      - name: dockersock
        hostPath:
          path: /var/run/docker.sock
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56285802

复制
相关文章
Gitlab-ci 构建
原因:服务端证书有问题。我使用的是自建的gitlab服务器,服务器上的证书差了一个属性。打印出来需要包含如下属性:
天地一小儒
2022/12/28
5370
Travis CI 构建 GitBook 实践
本文只提供思路,具体实现请查看本人博客的其他文章。务必对 Travis CI 基础知识 了解之后再阅读本文。 刚开始在 Travis CI 中从零开始搭建环境,全部执行时间为 三分半,将环境部署进 Docker, docker run XXX 之后直接开始生成,时间缩短为 一分半。 准备 GitBook 项目文件 新建 .travis 文件夹 复制根目录 book.json 文件 编写 Dockerfile 文件 FROM node:9-alpine ENV TZ=Asia/Shanghai WORKD
康怀帅
2018/02/28
1.1K0
iOS 减少编译时间小结
减少编译时间 不编译 彻底不编译 无用 pod 库 少用 pod 库 去除无用代码 引入 SwiftLint 规范代码 移除无用方法 过期方法警告⚠️ 尽量不编译 模块化 权限 声明为 private swift extension IBOutlet 优化 OC 头文件 使用 @class 属性移到 .m 文件 编译快点 减少类型推断 使用独立sb 简单布局用纯代码 减少编译时间.png
woopDast1
2022/02/16
5590
基于gitlab ci构建devops平台
devops的概念很多,理解也很多。我的理解,它属于软件工程范畴。它定义了一种理念,基于这种理念,能够快速的开发,交付软件及成果物。各个团队直接在这个体系中,高效的沟通,协作等。
暮雨
2018/10/11
4.6K2
基于gitlab ci构建devops平台
Gitlab CI + Helm + Kubernetes 构建CI/CD
https://blog.csdn.net/ygqygq2/article/details/85097857
YP小站
2020/06/04
2.4K0
Gitlab CI + Helm + Kubernetes 构建CI/CD
机器学习 |使用Tensorflow和支持向量机创建图像分类引擎
为了了解图像识别,小编阅读了很多文章,并将其中一篇英文文献翻译出来,重现文献中的实践步骤,而这篇推文则是小编翻译原文并重现的成果(魔术师提供文献相关的所有技术资料,公众号后台回复【图像识别】,即可获取源代码下载链接~~)
用户1621951
2019/10/18
7030
机器学习 |使用Tensorflow和支持向量机创建图像分类引擎
为了了解图像识别,小编阅读了很多文章,并将其中一篇英文文献翻译出来,重现文献中的实践步骤,而这篇推文则是小编翻译原文并重现的成果(魔术师提供文献相关的所有技术资料,公众号后台回复【图像识别】,即可获取源代码下载链接~~)
短短的路走走停停
2019/06/19
6980
如何减少铣削过程中的振动?
在铣削中,可能因切削刀具、刀柄、机床、工件或夹具的局限性而产生振动。要减少振动,需要考虑一些策略。
UG数控编程
2020/03/03
1.1K0
如何减少铣削过程中的振动?
将Tensorflow调试时间减少90%
今天为大家介绍可应用于Tensorflow代码的VeriTensor代码方法,以使调试起来更加有效。
IT大咖说
2020/04/21
1.3K0
将Tensorflow调试时间减少90%
减少网站响应时间概要
概要 减少HTTP请求文件的大小 精简html的DOM元素数量 压缩css,js代码 图片文件选用合适的格式。对于色彩数不是很丰富的图片,使用png格式 压缩图片。使用类似智图的工具 服务器端启用gzip压缩 静态资源放在没有cookie的domain下 减小cookie大小 减小网站标题图标(favicon.ico)的大小 减少HTTP请求数 合并文件。比如将所有的样式表合并成一个,所有脚本文件合并成一个 合并一些图标类图片。图标类图片做成图片精灵(CSS Sprites) 缓存 静态资源的缓存 a
前端GoGoGo
2018/08/27
7500
减少上班通勤的时间
2020 年的工作正式开启,大多数开发者的开工方式是云办公。对开发者来说,云办公意味着什么?如何开始云办公?云办公的发展趋势会怎样?基于此,云加社区联手知乎科技,从知乎云办公相关话题中精选内容落地社区专题「 开发者云办公模式洞察 」。
腾讯云开发者社区
2020/03/20
1K1
GitLab CI构建SpringBoot-2.3应用
在《体验SpringBoot(2.3)应用制作Docker镜像(官方方案)》一文中,咱们掌握了SpringBoot官方推荐的镜像构建方案,接下来要体验的是GitLab的CI能力,它负责把代码变成私有仓库中的镜像,咱们可以专心编码了;
程序员欣宸
2021/05/17
1K0
GitLab CI构建SpringBoot-2.3应用
GitLab + Drone构建CI&CD环境
上面被注释掉的是关于CD的步骤(配合`Deploy`工具很容易部署完成),这里就不详细叙述了,Drone 相比于Jenkins来说简单易用,易部署,轻量,适合小型的开发团队。
overtrue
2018/10/18
2.5K0
GitLab + Drone构建CI&CD环境
GitLab CI构建SpringBoot-2.3应用
https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
程序员欣宸
2022/05/09
1.2K0
GitLab CI构建SpringBoot-2.3应用
基于 GitLab CI 搭建自动构建环境
持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。
DevOps时代
2020/06/16
3.1K0
基于 GitLab CI 搭建自动构建环境
如何在Ubuntu 16.04上安装Concourse CI
Concourse CI是一个现代的,可扩展的持续集成系统,旨在通过可组合的语法自动化测试管道。由于早期CI系统的成功,Concourse旨在简化管道管理过程并消除“雪花”服务器,以便测试服务器与其处理的代码一样受到监管。
黑色技术
2018/08/07
9810
如何在Ubuntu 16.04上安装Concourse CI
巧用SDK,帮你减少开发时间
已经介绍过很多次NXP的SDK在开发中的应用,但多是基于KV系列和K系列的芯片,最近一个小项目用的是Kinetis KE02系列,该系列已经在SDK中支持,如果对SDK熟悉的话,会很容易上手,遗憾的是SDK都不支持Modbus通讯,而Modbus通讯底层最重要的就是对帧结尾t3.5和字节间隔t1.5的检测,而SDK提供了定时器的驱动,所以还是很容易实现,例如我们假定用定时器1来做modbus的两个时间检测,那么就可以配置如下
用户1605515
2018/11/08
5270
如何减少长时间的 GC 停顿?
长时间的 GC 停顿对应用程序是不利的,它会影响服务的 SLA,进而导致糟糕的用户体验,并对核心应用程序的服务造成严重损害。因此,在本文中,我列出了导致长时间 GC 停顿的关键原因以及解决这些问题的可能的解决方案。
涤生
2019/10/08
1.5K0
如何减少长时间的 GC 停顿?
如何减少长时间的 GC 停顿?
长时间的 GC 停顿对应用程序是不利的,它会影响服务的 SLA,进而导致糟糕的用户体验,并对核心应用程序的服务造成严重损害。因此,在本文中,我列出了导致长时间 GC 停顿的关键原因以及解决这些问题的可能的解决方案。
用户1516716
2019/10/08
1.8K0
如何减少长时间的 GC 停顿?
Travis CI 自动化构建 Hexo 博客
在你的hexo源码项目, 取出master分支中 添加配置文件.travis.yml,并推送到acc8226.github.io项目中.
acc8226
2022/05/17
3820

相似问题

如何在使用码头时加快CI构建时间?

11

尽量减少码头上分级项目的构建时间

12

如何在Circle CI或Travis CI上减少Elm编译时间?

35

Gitlab CI如何在构建码头映像之前运行测试

12

如何提高CI工具GitHub操作时码头形象的构建时间

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文