docker - 如何使用 docker 为 gitlab 托管的项目运行 gitlab-runner?

标签 docker gitlab gitlab-ci-runner

我正在将 gitlab-runner 部署到 google-cloud-engine 上的 kubernetes,以便可以快速扩展运行器/将配置发送给其他人,以便他们可以运行自己的运行器。但首先,我想尝试看看是否可以将运行者本地连接到我的笔记本电脑上。

设置 我在 gitlab 上有一个公开的项目,但我认为这并不重要,因为这里的目标只是能够在 gitlab 运行器上运行基于 docker 的测试。 使用 docker,我已经向自己证明这是可能的:https://github.com/NullVoxPopuli/vsts-agent-with-aws-ecr (我为工作所做的一个项目)

这是我迄今为止为 gitlab runner 所做的:

#/bin/bash
docker stop gitlab-runner && docker rm gitlab-runner

docker run -d --name gitlab-runner --restart always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/local/gitlab-ci-runner/config:/etc/gitlab-runner \
  -v "$(pwd)/config.toml":/etc/gitlab-runner/config.toml:ro \
  gitlab/gitlab-runner:alpine

docker exec -it gitlab-runner gitlab-runner register \
  -n \
  --url https://gitlab.com/ci \
  --tag-list "docker,docker-compose" \
  --run-untagged \
  --registration-token my-runner-token \
  --executor docker \
  --description "Docker Runner" \
  --docker-image "docker:dind" \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
  --docker-privileged

这是我的 config.toml:

concurrent = 4

[[runners]]
    name = "precognition-gitlab-runner"
    url = "https://gitlab.example.com/ci"
    token = "my-runner-token"
    executor = "docker"
    run_untagged = true

    [runners.docker]
      tls_verify = false
      image = "alpine"
      privileged = true
      disable_cache = false
      volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    [runners.cache]
      Insecure = false

现在,当我运行运行 gitlab-runner 的脚本然后注册它时,我确实在 gitlab 的 https://gitlab.com/project_name/settings/ci_cd 中看到它。

但是,它表示运行者尚未连接: enter image description here

正确的配置方法是什么?

这是我的 .gitlab-ci.yml 供任何好奇的人使用:https://gitlab.com/precognition-llc/aeonvera-ui/blob/registration-rework/.gitlab-ci.yml

它只是运行其他脚本,这些脚本又运行 docker-compose,然后运行测试。

最佳答案

我之前也遇到过和你一样的问题。 看起来 docker 容器在他完成注册运行器后就退出了。 由于某种原因,即使设置了 docker run -rm 标志,我在后续命令中仍收到“容器已存在”。也许教程有错误或者我们误解了其中的一些步骤。

我解决这个问题的方法是先删除容器

docker stop gitlab-runner
docker rm gitlab-runner

然后启动已经注册的容器:

docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

希望对您有所帮助。

关于docker - 如何使用 docker 为 gitlab 托管的项目运行 gitlab-runner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184034/

相关文章:

gitlab-ci - 如何避免为 Gitlab CI 中的每个作业重新安装依赖项

python - docker 化时 pip 要求不匹配

gitlab - 基于 Hugo 的网站在基于 Hugo 的网站中

gitlab - .gitlab-ci.yml 中的 `cache:key` 有什么意义?

html - 如何在 Gitlab 中删除 p 标签的 auto ="dir"?

使用 Bash 的 Windows GitLab CI 运行器

docker - 在Docker Hub上更新简短描述

php - 将 nginx 和 php 运行到具有适当用户的容器中进行开发

外部硬盘驱动器上的 Docker 卷

python - Gitlab CI Runner 无法在 Python 中导入 Google.Cloud