GitLab CI/CD 因git凭据踩坑

GitLab CI/CD 因git凭据踩坑

[TOC]linux

1. 问题

我在windows上,使用git push到gitlab中的私有项目上(项目是有ci/cd设置的),runner执行时出现403权限问题,可是在页面上,点重试又是正常的。该问题花了我2天时间。。。开始怀疑是gitlab或者runner的问题,我环境复杂,又是集成kubernetes,各类折腾,无果。git

GitLab CI/CD 因git凭据踩坑

2. 解决过程

既然windows的git命令不行,那试试sourcetree,同样的结果。反而在linux上用git命令也试了,是正常的,固然每次都须要输入用户密码。docker

那是否是用户密码没有缓存进去呢?找了个博客,他说的问题缘由,可能因为多个账户缓存。windows

https://blog.csdn.net/aimee1608/article/details/81041685缓存

通过测试,linux下git url中带用户密码,是可行的,但windows下仍是不行。ide

索性,把windows下的git相关的凭据所有删除,git url中不带用户密码(由于咱们用户名都是邮箱,git url好像不能包含用户名为邮箱)。gitlab

GitLab CI/CD 因git凭据踩坑

下面是正常的pipeline过程:测试

GitLab CI/CD 因git凭据踩坑

3. 小结

  1. 对比上面CI的图,有问题的triggered的用户为Administrator,正常的则为push用户。由于我是gitlab管理员,我本机也缓存了root的用户密码,虽然我已经将root添加为该git项目的成员,可是在凭据管理器中,仍是让git产生了混淆,CI仍旧不能正确获取push的用户凭证;
  2. gitlab 私有仓库权限严格,只有成员用户push才能触发CI/CD,并且push的用户凭证,CI/CD中须要获取到;
  3. 出现问题,应该先根据问题现象找缘由,再慢慢深刻。我偏偏是去折腾gitlab、runner、kubernetes和docker版本的gitlab差别对比花了不少时间,最后才回来找gitlab 403错误。

这种细节,官方文档就算有,也很难找到,在此记录下。url

相关文章
相关标签/搜索