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

相關文章
相關標籤/搜索