通过docker部署gitlab-runner
把gitlab的config文件挂载出来做持久化处理
docker run -d --name gitlab-runner --privileged=true --restart always -v /opt/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock -v /root/.docker/:/root/.docker/ gitlab/gitlab-runner:latest
通过进入容器中对这个runner注册对应的gitlab的地址和token相关信息
`[root@cloud1 /opt/gitlab-runner/config]# docker exec -it gitlab-runner gitlab-runner register`
Runtime platform arch=amd64 os=linux pid=253 revision=c1edb478 version=14.0.1
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
这个时候通过查看gitlab上面可以看到我们注册的gitlab-runner已经出现了
但是这个时候这个runner其实不可用的,由于我们使用的时候涉及到私有仓库的一些镜像的拉取,这个时候他是没有权限的,我们需要通过gitlab-runner配置的volumes参数把它本地login的信息挂载进去
`[root@cloud1 /opt/gitlab-runner/config]# cat config.toml `
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-01"
url = "xxx"
token = "xxx"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "ruby:2.6"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock","/root/.docker/:/root/.docker/"]
shm_size = 0
简单的优化
- 修改runner的配置文件,修改runner启动容器的规则,当本地有镜像的时候不会重复拉取,节省了时间
pull_policy = "if-not-present"
修改完以后重启这个gitlab-runner
#重启生效
`[root@cloud1 /opt/gitlab-runner/config]# docker exec -it gitlab-runner gitlab-runner restart `
Runtime platform arch=amd64 os=linux pid=112 revision=c1edb478 version=14.0.1