当前位置: 代码迷 >> 综合 >> [GitLab]安装一个GitLab Runner(Docker)
  详细解决方案

[GitLab]安装一个GitLab Runner(Docker)

热度:75   发布时间:2023-11-11 03:24:28.0
  • 首先要启动一个GitLab Runner容器

    • Run GitLab Runner in a container

         docker run -d --name gitlab-runner --restart always \-v /{你的配置文件路径}/config:/etc/gitlab-runner \-v /var/run/docker.sock:/var/run/docker.sock \gitlab/gitlab-runner:latest
      
  • (初始化新手向推荐)docker exec -it gitlab-runner bashgitlab-runner register来按照向导手动输入各项配置

    • Enter the GitLab instance URL:你的gitlab网站,http://gitlab.example.com
    • Enter the registration tokenhttp://gitlab.example.com/admin/runners可以看到注册令牌
    • Enter tags for the runner:runner适用的tags
    • Enter an executor:因为这里是使用Docker安装,因此就输入docker
    • Enter the default Docker image:runner使用的基础系统镜像,这个基础镜像的制作也是一门学问
  • **(老手推荐)**在挂载出来的config目录下创建config.toml,在里面写入相关配置

  • docker restart gitlab-runner重启以应用配置

  • 后续建议添加docker-compose.yml

    version: '3'
    services:gitlab-runner:image: gitlab/gitlab-runnerrestart: unless-stoppedprivileged: truevolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sock- /bin/docker:/bin/docker- /root/.ssh:/root/.ssh
    

问题:runner需要使用宿主机的docker

gitlab-runner+docker自动化集成+遇到的问题汇总

容器运行Gitlab-Runner时无法使用docker命令

跑流水线时报错:docker: command not found

  • 先使用上述docker-compose.yml把宿主机的关键文件挂载

  • config.toml中增加docker命令挂载

    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/usr/bin/docker:/usr/bin/docker","其他挂载..."]
    

问题:日志输出过多

往往是由于部分命令输出过多引起的,分类情况讨论

  • mvn verify:改为mvn -q verify,仅输出报错(Maven Command Line Options)

问题:docker login的用户密码

denied: requested access to the resource is denied

可以选择在gitlab-ci.yml里明文或采用变量登录仓库

  • 更好的方式是挂载config.json

    • config.toml中增加docker配置文件挂载

      volumes = ["/root/.docker/:/root/.docker/","其他挂载..."]
      
    • 然后在gitlab-runner容器中docker login一次,就会生成auth认证,这样由这个runner执行的作业都无需在流水线中手动登录

问题:ssh需要免密认证/maven镜像源

你应该已经明白了,如何将宿主机的文件搬进runner创建的容器内

  • 先使用上述docker-compose.yml把宿主机的关键文件挂载

  • config.toml中增加docker命令挂载

    volumes = ["/root/.ssh:/root/.ssh","其他挂载..."]
    

MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html

  相关解决方案