使用 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
Your browser is out-of-date!

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

×