1、权限禁止
报错信息
warning:unable to access '/home/gitlab-runner/.config/git/attributes':Permission denied
权限问题,重新针对文件所在的最近一层文件夹赋予可执行权限
chmod -R 777 file
2、流水线只能单个job去执行,并没有并发执行
主要是因为concurrent
设置了1,只能有1个job并行执行,把concurrent
参数改一下,比如改成6,就可以一次并行6个job了
vi /etc/gitlab-runner/config.toml
3、Runner未激活问题
有时候管理员注册共享runner后,查看面板上的Runner信息,可能会发现Runner处在未激活状态。
解决方法:
运行以下命令重新启动Runner。
sudo gitlab-runner verify
sudo gitlab-runner restart
sudo nohup gitlab-runner run &
4、Job一直挂起,没有Runner来处理
首先考虑的是不是Runner没有激活。
还可能是tags没有匹配到, Runner注册时是要填写绑定tags的,如果你在YML里面编写Job没有带上tags是不会有自定义Runner来处理。解决方法:给Job加tags。
最后一种可能:你连续注册了多个Runner,这些Runner冲突了,或者是新注册的Runner和旧Runner使用了同一个token,这时候的解决方法如下:
先删掉本地其他旧的Runner
sudo gitlab-runner unregister --all-runners
然后重置Token,并使用更新后的Token重新注册一个Runner
5、注册好了的Runner的信息存放在哪里
GitLab-CI会为这个Runner生成一个唯一的token,以后Runner就通过这个token与GitLab-CI进行通信。
那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?
原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况(在类Unix操作系统下(0.5.0之后版本)):
以root用户身份运行
gitlab-ci-multi-runner register
,那么配置文件默认是/etc/gitlab-runner/config.toml
以非root用户身份运行
gitlab-ci-multi-runner register
,那么配置文件默认是~/.gitlab-runner/config.toml
6、gitlab-runner更改缓存地址
6.1、全局修改缓存
vi/etc/systemd/system/ gitlab-runner.service
把基础目录改成:/var/www/gitlab-runner-build-dir
[Unit]
Description=GitLab Runner
ConditionFileIsExecutable=/usr/bin/gitlab-runner
After=syslog.target network.target
[Service]
StartLimitInterval=5
StartLimitBurst=10
# /var/lib/gitlab-runner 替换你需要的目录
ExecStart=/usr/bin/gitlab-runner "run" "--working-directory" "/var/lib/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--user" "gitlab-runner"
Restart=always
RestartSec=120
EnvironmentFile=-/etc/sysconfig/gitlab-runner
[Install]
WantedBy=multi-user.target
重启runner
gitlab-runner restart
注意需要给gitlab-runner-build-dir
目录权限:chmod -R 777 gitlab-runner-build-dir
6.2、局部修改,针对每个runner修改
vi /etc/gitlab-runner/config.toml
重置执行目录:/var/www/gitlab-runner-build-dir
[[runners]]
name = "kubernetes-sync"
url = "http://192.168.xx.xxx:xx/"
id = 41
token = "y399Di21U1xxxxxx"
token_obtained_at = 2022-10-22T18:45:46Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "shell"
builds_dir = "/var/www/gitlab-runner-build-dir/" # 添加指定目录
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
重启runner
gitlab-runner restart
注意需要给gitlab-runner-build-dir
目录权限:chmod -R 777 gitlab-runner-build-dir
7.gitlab-runner启动失败
如下错误 :
root@MS-7B98:~# sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=4473 revision=bbcb5aba version=15.3.0
FATAL: Failed to start gitlab-runner: exit status 1
解决办法 :
sudo gitlab-ci-multi-runner install -u gitlab-runner
sudo gitlab-runner status
8.docker in docker 中 login出错
$ docker login -u xxx
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on 114.114.114.114:53: no such host
ERROR: Job failed: exit code 1
解决办法 :
更改/etc/gitlab-runner/config.toml
image = "docker:stable"
privileged = true
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
并且gitlab-runner.yaml
中的镜像与上面镜像一致
9.在K8s中部署报错
报错信息 :
Running with gitlab-runner 15.3.0 (bbcb5aba)
on gitlab-runner02-7d9f444d95-rk5vh MYBB91Uv
Preparing the "kubernetes" executor
00:00
Using Kubernetes namespace: local
Using Kubernetes executor with image ubuntu:16.04 ...
Using attach strategy to execute scripts...
Preparing environment
00:00
ERROR: Error cleaning up configmap: resource name may not be empty
ERROR: Job failed (system failure): prepare environment: setting up scripts configMap: generating scripts config map: configmaps is forbidden: User "system:serviceaccount:local:gitlab-runner02" cannot create resource "configmaps" in API group "" in the namespace "local". Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information
解决方法 :
在 gitlab-runner/values.yaml
修改
resources: ["pods", "pods/exec", "secrets", "configmaps", "pods/attach"]
verbs: ["get", "list", "watch", "create", "patch", "delete", "update"]
10.在k8s中用命令部署提示登录失败
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred # 指定密码字典
评论区