我正在使用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中看到它配置此功能的正确方法是什么?
这是我的.gitlab-ci.yml,适合所有好奇的人:https://gitlab.com/precognition-llc/aeonvera-ui/blob/registration-rework/.gitlab-ci.yml
它只运行其他脚本,然后运行docker-compose然后运行测试。
答案 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
我希望它有所帮助。