下面是关于"go mod使用私有gitlab群组的解决方案"的完整攻略。
背景
在使用Go开发项目的过程中,可能会使用到私有GitLab上的包。而在使用Go modules时,我们需要在go.mod中引入这些包。但是,由于私有GitLab需要认证,这样我们就不能直接引入。
那么,怎样才能够在Go modules中使用私有GitLab呢?
以下是两种解决方案。
解决方案一
准备
- 在GitLab中创建一个新项目,并将代码上传至该项目。
- 获取该项目的ssh地址,并在本地机器上执行
ssh-keyscan -t rsa gitlab.example.com > ~/.ssh/known_hosts
将其加入到known_hosts
文件中。
Go Modules中引入私有GitLab
- 在go.mod中引入私有GitLab包
replace example.com/foobar => git@gitlab.example.com:example/foobar.git
其中example.com/foobar
为你在代码中实际使用的包路径,git@gitlab.example.com:example/foobar.git
为你的GitLab项目ssh地址。
- 执行
go get
命令,Go将会拉取私有GitLab包并保存在$GOPATH/pkg/mod目录下。
解决方案二
准备
- 在gitlab.example.com上创建一个CI/CD变量,变量名为
PRIVATE_TOKEN
,变量值为GitLab的私有token。可在个人设置中生成私有token。 - 在go.mod文档头部添加私有GitLab的token
module example.com/foobar
go 1.13 // go版本
require (
gitlab.example.com/example/foobar v0.0.1 // 示例
)
// 添加代理
replace (
gitlab.example.com/example/foobar =>
gitlab.example.com/api/v4/example/foobar.git v0.0.1 // 示例
// 添加代理地址
// ?private_token=[私有GitLab项目的token]
)
其中gitlab.example.com/api/v4/example/foobar.git
为你的GitLab项目的ssh地址,?private_token=[私有GitLab项目的token]
为私有GitLab项目的token,可从个人设置中生成。
Go Modules中引入私有GitLab
- 在go.mod中引入私有GitLab包
require (
gitlab.example.com/example/foobar v0.0.1 // 示例
)
- 执行
go get
命令,Go将会拉取私有GitLab包并保存在$GOPATH/pkg/mod目录下。
到这里,我们就可以在Go modules中引入私有GitLab了。
希望这篇文章对大家有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go mod 使用私有gitlab群组的解决方案 - Python技术站