使用 GitLab CI 进行持续集成的一些踩坑

前言

最近重新使用 GitLab CI 对项目进行持续集成,碰到了一些问题,在此记录下来,并给出自己的解决方案,或许可以给搜到这的朋友一些帮助或启发。


GitLab CI

关于 gitlib ci 的介绍和基础知识 参考 用 GitLab CI 进行持续集成


注册 runner 后,gitlab runner 出现灰色感叹号

在服务器注册完 runner 后,在 gitlab 的 runner 处出现灰色感叹号,并提示 new runner has not connected yet。这个问题一般都是权限问题造成的,加 sudo 和不加 sudo 所创建的配置文件不同。在使用 gitlab-runner register 注册的时候,加上 sudo,在启动 runner 时也要加上 sudo , sudo gitlab-runner restartsudo gitlab-runner start


无法删除 runner

在使用 gitlab-runner unregister 删除 runner 时,提示 Error: unregistering runner from gitlab forbidden。使用 gitlab-runner verify 检测 runner 是否已连接至 gitlab ,然后 gitlab-runner verify --delete 在注册列表中删除它们。


gitlab-runner list 不显示注册的 runner

使用 sudo 权限注册的 runner 要使用 sudo gitlab-runner list 查看。


构建时提示 mkdir: cannot create directop ‘/home/gitlab-runner/builds/xxxxx’: Permission denied

用户 gitlab-runner 没有构建目录的权限,加上权限即可,或切换至 root 用户,给该文件夹上权限。


构建时的环境变量问题

如在构建的时候,提示 bash: npm: command not found,此时可以去服务器上给 bash 加上环境变量,或者在 before_script 阶段加上环境变量,例如:

1
2
before_script:
- export PATH=/home/souche/n/bin:$PATH

下一个 Stages 无法使用上一个 Stages 生成的文件

这是因为在进行一个新的 Stages 时,会把上一个 Stages 所产生的文件删除掉,解决方案就是使用缓存 cache,如:

1
2
3
4
cache:
key: '$CI_COMMIT_REF_NAME'
paths:
- .nuxt

构建时在 Getting source from Git repository 阶段出现错误提示 error: failed to write new configuration file /home/gitlab-runner/builds/xxxx/0/xxxx/xxxx.tmp/git-template/config.lock

出现这个提示,请检查服务器磁盘是不是已经满了,请释放些磁盘空间

iShot2020-08-0513.55.47.png

构建过程出现 fatal: git fetch-pack: expected shallow list fatal: The remote end hung up unexpectedly

iShot2020-08-0513.46.41.png

这是因为服务器 git 版本太低,不支持新的 api,去服务器升级一下 git 版本

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×