docker ---- gitlab-runner

docker ---- gitlab-runner

本文以 gitlab/gitlab-runner:alpine-v14.1.0 为例实践;

1.搭建gitlab-runner容器

1.拉取镜像
sudo docker pull gitlab/gitlab-runner:alpine-v14.1.0
2.创建 Runner 容器
  1. 通过配置文件目录

    mkdir ~/gitlab-runner/config
    
  2. 通过命令直接创建容器

    docker run -d \
     --name gitlab-runner-docker \
     --restart always \
     -v /var/run/docker.sock:/var/run/docker.sock \
     -v ~/gitlab-runner/config:/etc/gitlab-runner \
     gitlab/gitlab-runner:alpine-v14.1.0
    
  3. 或-通过配置文件创建容器

    创建一个 config-compose 目录,然后新建一个 docker-compose.yml 文件,内容如下:

    version: "3"
    services:
      app:
        image: gitlab/gitlab-runner:alpine-v14.1.0
        container_name: gitlab-runner-docker
        restart: always
        volumes:
          - ~/gitlab-runner/config:/etc/gitlab-runner
          - /var/run/docker.sock:/var/run/docker.sock
    

    config-compose 目录下执行 docker-compose up --build -d 命令,docker ps -a 即可看见刚才创建的容器,同时目录下会生成一个 config 目录,用于存放 Runner 的配置文件;

3.注册 Runner
1.获取相应配置信息

GitLab 的仓库 Setting -> CI/CD 设置页面中,展开 Runners 部分,即可看到生成的URLToken,复制粘贴即可
在这里插入图片描述

2.配置相应信息
docker exec -it gitlab-runner-docker gitlab-runner register
  1. 输入 GitLab 的地址
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
    https://gitlab.com/ # 此处填写URL信息,项目实际信息
    
  2. 输入 Token 来注册 Runner
    Please enter the gitlab-ci token for this runner
    xxxToken # 此处填写Token信息,项目实际信息
    
  3. 输入 Runner 的描述

    可以在 GitLab 管理页面进行修改;

    Please enter the gitlab-ci description for this runner
    my-runner-desc
    
  4. 输入 Runner 关联的标签

    可以在 GitLab 管理页面进行修改;

    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag,another-tag # 逗号分隔,用于检索的
    
  5. Enter the Runner executor

    GitLab Runner 内置了多种 executor,不同类型的 executor 的区别,可以参考文档:Executors ;

    我们是在docker上跑,这里选择填写 docker就行;

    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    docker
    
  6. Enterthe Docker image

    而这一步需要指定的默认镜像,就是当 .gitlab-ci.yml 文件中没有指定任务需要的镜像时使用的;

    推荐使用 tico/docker 作为默认镜像,个人配置时使用了默认镜像;

    Please enter the Docker image (eg. ruby:2.1):
    docker:stable
    
  7. 注册成功
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    
3.查看 Runner配置、修改

详情见:
advanced-configuration
use-docker-in-docker-executor
gitlab-runner 的 executors 之 docker

理论上修改配置文件,docker restart gitlab-runner-docker 即可,当前记录时,尚未实践修改配置并生效;

配置默认在 ~/gitlab-runner/config 下,配置文件更改时不需要重启服务,每隔三秒 GitLab Runner 会检查配置修改,并重新加载;

进入 ~/gitlab-runner/config 目录,会发现一个 config.toml 文件,里面是 gitlab-runner 相关的配置信息;

以下配置将注册一个使用 docker:stable 镜像的 Runner,它使用 privileged 模式启动构建和服务容器。这也是使用 docker-in-docker 模式必须使用的设置:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "long-gitlab-runner"
  url = "https://gitlab.com/"
  token = "xxxToken"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

2.测试实践

使用.gitlab-ci.yml配置你的项目;

stages:
  - build
  - test

build:
  stage: build
  script: echo "Building the app"

test:
  stage: test
  script: echo "Running tests"

提交或保存以上配置,触发流水线执行,在流水线执行过程中可能出现以下问题;

3. 问题修复

1.This job is stuck, because the project doesn‘t have any runners online assigned to it.

gitlab runner config

2.error during connect: Post http://docker:2375/v1.39/auth: dial tcp: lookup docker on 183.60.83.19:53: no such host

在流水线中进行 docker 登录操作时,即 docker login -u username -p password时,可能出出现当前错误情况;

解决方法:

  1. 进入到 gitlab runner 的配置目录下,即 config.toml 所在目录,cd ~/gitlab-runner/config;
  2. 修改 gitlab runner 配置,即 runners.docker,即vi config.toml;
privileged = true
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]

为什么这样修改:

添加 /var/run/docker.sock:/var/run/docker.sock 允许在内部运行的 docker容器 gitlab-runner 访问外部(主机)docker 守护进程。如果没有这个,它会尝试连接到 docker默认 URL,即 http://docker:2375. 此 URL 无法通过 DNS 解析(在我的情况下183.60.83.19:53,DNS 服务器是 ,DNS 标准端口是 53),因此 docker 会打印上面列出的错误消息;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值