前言
最近重新使用 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 restart
或 sudo 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 | before_script: |
下一个 Stages 无法使用上一个 Stages 生成的文件
这是因为在进行一个新的 Stages 时,会把上一个 Stages 所产生的文件删除掉,解决方案就是使用缓存 cache,如:
1 | cache: |
构建时在 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
出现这个提示,请检查服务器磁盘是不是已经满了,请释放些磁盘空间
构建过程出现 fatal: git fetch-pack: expected shallow list
fatal: The remote end hung up unexpectedly
这是因为服务器 git 版本太低,不支持新的 api,去服务器升级一下 git 版本