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

时间:2017-05-25 15:17:42

标签: docker gitlab gitlab-ci-runner

我正在使用google-cloud-engine将gitlab-runner部署到kubernetes,因此可以快速扩展跑步者/将配置发送给其他人,以便他们可以运行自己的跑步者。但首先,我想试着看看我是否可以在我的笔记本电脑上联系当地的跑步者。

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

以下是我目前为gitlab跑步者所做的事情:

#/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然后注册它的脚本时,我https://gitlab.com/project_name/settings/ci_cd

中的gitlab中看到它

但是,它说跑步者尚未连接: enter image description here

配置此功能的正确方法是什么?

这是我的.gitlab-ci.yml,适合所有好奇的人:https://gitlab.com/precognition-llc/aeonvera-ui/blob/registration-rework/.gitlab-ci.yml

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

1 个答案:

答案 0 :(得分:1)

我遇到了和以前一样的问题。 似乎停泊器容器在完成注册跑步者后退出。 由于某种原因,我得到了#34;容器已经存在"即使设置了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

我希望它有所帮助。