问题
早上来发现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。
- Username with password
- 使用这种类型的credential的话,只需要添加我的gitlab的账号和
密码在jenkins服务器上,然后在打包任务的crediential中配置。 - 在图上的界面中Global credentials (unrestricted) 下拉菜单点击add credential,填写gitlab账号和密码。
- 使用这种类型的credential的话,只需要添加我的gitlab的账号和
- 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
再来到jenkins配置界面update credential的配置。
点击箭头处,进入之后将之前生成的id_rsa文件全部内容复制粘贴到Private Key处保存。因为之前iOS打包配置使用的就是jenkins这个credential,更新之后打包正常。
总结
以上两种方式都可以用来配置打包任务的credential,都可以解决标题上的问题。credentail主要是用于jenkins从gitlab上拉最新代码,第一种方式(Username with password)比较简单,密码修改之后需要重新配置;第二种方式(SSH Username with private key)比较麻烦,