我正在将 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 中看到它。
正确的配置方法是什么?
这是我的 .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/