問題
早上來發現jenkins打包失敗報錯誤:stderr: GitLab: Your account has been blocked. fatal: Could not read from remote repository。
分析
vpn的連接沒有問題,查看了ssh對應的gitlab賬號之前是綁定一名離職同事賬號下,賬號已經被blocked了,所以問題是機器連不上gitlab,不能同步最新代碼了。
解決
公司jenkins服務器(配的一個專用做打包的mac-mini)使用的credential類型兩種SSH Username with private key和 Username with password。
粘貼圖片.png
- Username with password
- 使用這種類型的credential的話,只需要添加我的gitlab的賬號和
密碼在jenkins服務器上,然后在打包任務的crediential中配置。 - 在圖上的界面中Global credentials (unrestricted) 下拉菜單點擊add credential,填寫gitlab賬號和密碼。
- 使用這種類型的credential的話,只需要添加我的gitlab的賬號和
粘貼圖片.png
- SSH Username with private key
- 使用這個類型credential,需要在jenkins服務器生成sshkey,分別配置到jenkins服務器和gitlab上我的賬號下,然后應用到打包任務中就over了。
- 在jenkins服務器上先刪除之前生成的舊的sshkey,然后生成新的。
rm -r ~/.ssh // 刪除之前的ssh信息
ssh-keygen -t rsa -C "youremail@xxx.com" 一路按回車鍵即可
命令執行完會在~/.ssh 生成 id_rsa和id_rsa.pub。 打開gitlab,添加sshkey,將id_rsa.pub文件內容全部復制粘貼過去就好了。
gitlab添加sshkey
gitlab添加sshkey
再來到jenkins配置界面update credential的配置。
jenkins update credential.png
點擊箭頭處,進入之后將之前生成的id_rsa文件全部內容復制粘貼到Private Key處保存。因為之前iOS打包配置使用的就是jenkins這個credential,更新之后打包正常。
總結
以上兩種方式都可以用來配置打包任務的credential,都可以解決標題上的問題。credentail主要是用于jenkins從gitlab上拉最新代碼,第一種方式(Username with password)比較簡單,密碼修改之后需要重新配置;第二種方式(SSH Username with private key)比較麻煩,