安装
目录结构
1 | 宿主机通过root登录,可以使用普通用户登录 |
docker-compose.xml
不需提前建config
目录
提前建ssh
目录,并配置权限chmod -R 777 ssh
,755
、766
权限都不行
1 | version: '3.8' |
注册 runner 实例
1 | 进入容器 |
注册后,会生成以下gitlab-runner
的config.toml
配置文件
1 | concurrent = 1 |
下载 gitlab-runner 执行 .gitlab-ci.yml 流水线可能需要使用到的镜像
1 | 必须 |
gitlab-runner 容器 SSH 免密登录远程主机
生成秘钥
1 | docker-compose 先做 ssh 目录的持久化,再进入容器执行构建秘钥命令 |
配置config
解决 Pseudo-terminal will not be allocated because stdin is not a terminal 问题1
2
3
4 以 gilab-runner 用户登录容器(不能使用root)
tee ~/.ssh/config <<-'EOF'
StrictHostKeyChecking no
EOF
受控主机
将id_rsa.pub
里面的内容追加到受控主机的~/.ssh/authorized_keys
即可。
问题
Maven 持久化问题
解决:因为
Mave
n容器默认的路径为:/root/.m2
,所以gitlab-runner注册的时候,持久化这个路径就行了,使用--docker-volumes '/root/.m2:/root/.m2'
Job’s log exceeded limit of 4194304 bytes.
解决:在
gitlab-runner
的config.toml
加上output_limit
配置,默认是4096(4MB)
ERROR: Uploading artifacts as “archive” to coordinator… too large archive
解决:
admin area
->settings
->ci/cd
->Continuous Integration and Deployment
->Maximum artifacts size (MB)
Gradle 持久化问题
解决:因为
Gradle
容器默认的路径为:/home/gradle/.gradle
,所以gitlab-runner
注册的时候,持久化这个路径就行了,使用--docker-volumes '/root/.gradle:/home/gradle/.gradle'