notes

前言(目前发现的坑,问题已经全部解决)

集成CI有问题,因为在下载第三方库需要设置GOPROXY,设置了GOPROXY下载私有库会有问题,目前还没解决。

续:目前我们的解决方式是申请一个海外的ci服务器,这样就不用设置GOPROXY了。

再续:目前gitlab作为私有库的问题全部解决了,只是需要用到海外的服务器(我们用的是阿里云香港),还有一个问题就是Permission denied (publickey),需要生成一对密钥对,私钥注入到ci服务器临时执行的docker里面,公钥需要在gitlab上配置一下。配好了后可以拉取gitlab上的代码了。

golang私有库

Go语言是通过git去拉取第三方依赖的,私有库也是如此,需要修改.gitconfig

搭建golang私有库只需要一个gitlab,然后修改一些通用的git配置,就可以从自己搭建的gitlab上拉取,废话不多说,直接上代码

1. 从自己的gitlab上获取token

因为gitlab是私有的,不可能所有git都能拉取,所以需要给git配置身份验证。 获取身份验证的token路径是:Gitlab—>Settings—>Access Tokens,然后创建一个personal access token,这里权限最好选择只读(read_repository)

2. 修改全局git配置

git config --global http.extraheader "PRIVATE-TOKEN: {你的token}"
git config --global url."git@gitlab.your.com:".insteadOf "https://gitlab.your.com/"

上述配置完了就可以拉取代码了

go get -u -v gitlab.your.com/group_name/project_name

注意:这里有一个坑,在创建私有库项目的时候需要注意,私有库的gitlab地址只能是gitlab.your.com/group_name/project_namegitlab.your.com/project_name两种,目录层级不能再多了,不然会拉不下来,比如不能是这种:gitlab.your.com/group_name/go-components/project_name

如果你想做一个私有库供别人拉取

moduleName的格式为

go mod init gitlab.your.com/group_name/project_name

CI中拉取私有库gitlab报错

GitLab: Your account has been blocked.

原因是ci中配置了多个key

- ssh-add ~/deploy.key
- ssh-add ~/deploy_prd.key
- ssh-add ~/deploy_private_repo.key

其中,deploy_prd.key是另一个同事生成的,他把对应的public key加到他的账号ssh key里面了,但是他离职了,账号被block了,所以猜测即使deploy_private_repo.key配置正确,也会在之前用deploy_prd.key拉取代码的时候报block的错误。