-
首先要启动一个GitLab Runner容器
-
Run GitLab Runner in a container
docker run -d --name gitlab-runner --restart always \-v /{你的配置文件路径}/config:/etc/gitlab-runner \-v /var/run/docker.sock:/var/run/docker.sock \gitlab/gitlab-runner:latest
-
-
(初始化新手向推荐)
docker exec -it gitlab-runner bash
并gitlab-runner register
来按照向导手动输入各项配置- Enter the GitLab instance URL:你的gitlab网站,
http://gitlab.example.com
- Enter the registration token:
http://gitlab.example.com/admin/runners
可以看到注册令牌 - Enter tags for the runner:runner适用的tags
- Enter an executor:因为这里是使用Docker安装,因此就输入
docker
- Enter the default Docker image:runner使用的基础系统镜像,这个基础镜像的制作也是一门学问
- Enter the GitLab instance URL:你的gitlab网站,
-
**(老手推荐)**在挂载出来的config目录下创建
config.toml
,在里面写入相关配置 -
docker restart gitlab-runner
重启以应用配置 -
后续建议添加
docker-compose.yml
version: '3' services:gitlab-runner:image: gitlab/gitlab-runnerrestart: unless-stoppedprivileged: truevolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sock- /bin/docker:/bin/docker- /root/.ssh:/root/.ssh
问题:runner需要使用宿主机的docker
gitlab-runner+docker自动化集成+遇到的问题汇总
容器运行Gitlab-Runner时无法使用docker命令
跑流水线时报错:docker: command not found
-
先使用上述
docker-compose.yml
把宿主机的关键文件挂载 -
在
config.toml
中增加docker命令挂载volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/usr/bin/docker:/usr/bin/docker","其他挂载..."]
问题:日志输出过多
往往是由于部分命令输出过多引起的,分类情况讨论
mvn verify
:改为mvn -q verify
,仅输出报错(Maven Command Line Options)
问题:docker login的用户密码
denied: requested access to the resource is denied
可以选择在gitlab-ci.yml
里明文或采用变量登录仓库
-
更好的方式是挂载
config.json
-
在
config.toml
中增加docker配置文件挂载volumes = ["/root/.docker/:/root/.docker/","其他挂载..."]
-
然后在
gitlab-runner
容器中docker login
一次,就会生成auth认证,这样由这个runner执行的作业都无需在流水线中手动登录
-
问题:ssh需要免密认证/maven镜像源
你应该已经明白了,如何将宿主机的文件搬进runner创建的容器内
-
先使用上述
docker-compose.yml
把宿主机的关键文件挂载 -
在
config.toml
中增加docker命令挂载volumes = ["/root/.ssh:/root/.ssh","其他挂载..."]
MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html