集成CI有问题,因为在下载第三方库需要设置GOPROXY,设置了GOPROXY下载私有库会有问题,目前还没解决。
续:目前我们的解决方式是申请一个海外的ci服务器,这样就不用设置GOPROXY了。
再续:目前gitlab作为私有库的问题全部解决了,只是需要用到海外的服务器(我们用的是阿里云香港),还有一个问题就是Permission denied (publickey)
,需要生成一对密钥对,私钥注入到ci服务器临时执行的docker里面,公钥需要在gitlab上配置一下。配好了后可以拉取gitlab上的代码了。
Go语言是通过git去拉取第三方依赖的,私有库也是如此,需要修改.gitconfig
。
搭建golang私有库只需要一个gitlab,然后修改一些通用的git配置,就可以从自己搭建的gitlab上拉取,废话不多说,直接上代码
因为gitlab是私有的,不可能所有git都能拉取,所以需要给git配置身份验证。
获取身份验证的token路径是:Gitlab—>Settings—>Access Tokens,然后创建一个personal access token,这里权限最好选择只读(read_repository)
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_name
或gitlab.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的错误。