侧边栏壁纸
  • 累计撰写 106 篇文章
  • 累计创建 19 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

GitLab-CI / GitLab Runner常见问题

zero
2022-11-05 / 0 评论 / 0 点赞 / 26 阅读 / 7011 字
温馨提示:
本文最后更新于 2024-07-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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来处理

  1. 首先考虑的是不是Runner没有激活。

  2. 还可能是tags没有匹配到, Runner注册时是要填写绑定tags的,如果你在YML里面编写Job没有带上tags是不会有自定义Runner来处理。解决方法:给Job加tags

  3. 最后一种可能:你连续注册了多个Runner,这些Runner冲突了,或者是新注册的Runner和旧Runner使用了同一个token,这时候的解决方法如下:

    1. 先删掉本地其他旧的Runner

      sudo gitlab-runner unregister --all-runners
    2. 然后重置Token,并使用更新后的Token重新注册一个Runner

5、注册好了的Runner的信息存放在哪里

GitLab-CI会为这个Runner生成一个唯一的token,以后Runner就通过这个token与GitLab-CI进行通信。

那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?

原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况(在类Unix操作系统下(0.5.0之后版本)):

  1. 以root用户身份运行gitlab-ci-multi-runner register,那么配置文件默认是/etc/gitlab-runner/config.toml

  2. 以非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  # 指定密码字典

0

评论区