前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner

Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner

作者头像
Yuyy
发布2022-09-21 10:26:56
1.8K0
发布2022-09-21 10:26:56
举报
文章被收录于专栏:yuyy.info技术专栏

和k8s部署runner相比,Docker安装runner的优势

缓存,项目里用到的各种依赖,不可能每次都下载,以及构建、语法检测等都会产生缓存。在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,上传缓存。当前项目整个流水线跑下来需要10多分钟。而是用docker部署的runner,时间减少到3分钟,因为使用的本地磁盘来保存缓存。

docker-compose.yaml

代码语言:javascript
复制
version: "3.9"
services:
  gitrunner:
    image: 'gitlab/gitlab-runner'
    container_name: "gitlab-runner"
    restart: always
    volumes:
      - './data/config:/etc/gitlab-runner'
      - './data/cache:/tmp/cache'
      - './data/ssl:/etc/gitlab-runner/certs/'
      - '/usr/bin/docker:/usr/bin/docker'
      - '/var/run/docker.sock:/var/run/docker.sock'

创建挂载目录

代码语言:javascript
复制
mkdir -p data/config
mkdir -p data/cache
mkdir -p data/ssl

配置Gitlab的https证书

如果 gitlab 是 docker 部署的,ssl 证书所在路径为:/etc/gitlab/ssl/xxx.com.crt

将证书放到ssl目录,整体结构为

代码语言:javascript
复制
.
├── data
│   ├── cache
│   ├── config
│   └── ssl
│       └── xx.xx.com.crt
└── docker-compose.yaml

创建runner容器

代码语言:javascript
复制
docker-compose up -d

注册runner

Gitlab Runner 有 3 种级别

  1. 全局共享
    1. 因为 executor 使用的是容器,不是 shell,所以非特殊要求,使用这个就行。如果是 shell,可能每个项目用到的环境不同,需要单独使用 runner
  2. 群组共享
  3. 项目独占

Runner 的并发性

  1. 每个 job 会单独起一个容器
  2. 不同流水线的 job 是并行处理
  3. 同一流水线同一阶段的 job 也是并行处理

获取 Gitlab CI Register Token

访问Gitlab全局 Runner 配置地址:https://xxx.com/admin/runners

注册

代码语言:javascript
复制
docker exec -it gitlab-runner gitlab-runner register --non-interactive --executor "docker" --docker-image alpine:latest --url "https://xx.xx.com"  --registration-token "RQxx7UtMssiWyzWqtUMr" --description "172.30.7.17-docker-runner" --tag-list "docker-runner,share-runner,172.30.7.17-runner" --run-untagged="true"  --locked="false"  --access-level="not_protected"

查看

访问全局 Runner 配置地址:https://xxx.com/admin/runners

image-20220523174530380
image-20220523174530380

配置runner

vim data/config/config.toml

修改并发数

concurrent:默认为1,结合服务器配置自行修改

挂载目录

[runners.docker]下的volumes更改为:volumes = ["/opt/compose/gitlab-runner/data/cache:/cache","/usr/bin/docker:/usr/bin/docker","/var/run/docker.sock:/var/run/docker.sock"]

  • /opt/compose/gitlab-runner/data/cache:前面创建的挂载目录
  • /usr/bin/docker:/usr/bin/docker,/var/run/docker.sock:/var/run/docker.sock:实现docker in docker,用于打镜像

修改镜像拉取策略

  • 默认每次重新拉取
  • [runners.docker]下增加pull_policy = "if-not-present"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-5-23 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 和k8s部署runner相比,Docker安装runner的优势
  • docker-compose.yaml
  • 创建挂载目录
  • 配置Gitlab的https证书
  • 创建runner容器
  • 注册runner
    • Gitlab Runner 有 3 种级别
      • Runner 的并发性
        • 获取 Gitlab CI Register Token
          • 注册
          • 查看
          • 配置runner
            • 修改并发数
              • 挂载目录
                • 修改镜像拉取策略
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档