GO MOD使用私有仓库

go mod gerrit

Posted by hujin on April 6, 2021

背景

在常见的项目中使用go mod做包管理,在引用第三方包时这个包可能维护在内部私有仓库中,需要解决几个问题:

  • 引用第三方库
  • 引用私有仓库时不使用代理
  • 使用git方式获取代码

替换引用的仓库地址

这里直接修改代码中的引用工作量太大了,可以通过在go.mod中添加replace的方式:

  • github.com/gophercloud/gophercloud => gerrit-infrastructure.xxx.org/gerrit/a/container/gophercloud.git xxx-v0.7

注意这里末尾要加.git,否则默认使用https获取代码

私有仓库

设置GOPRIVATE

  • export GOPRIVATE=gerrit-infrastructure.xxx.org

使用git方式获取代码

1
2
3
4
5
6
[root@localhost cloud-provider-openstack]# cat /root/.gitconfig
[user]
    name = xxx
    email = xxx@xxxx.com
[url "ssh://xxx@gerrit-infrastructure.xxx.org:29418/container/gophercloud"]
    insteadOf = https://gerrit-infrastructure.xxx.org/gerrit/a/container/gophercloud

参考

  • https://goproxy.io/zh/
  • https://segmentfault.com/a/1190000021127791
  • https://juejin.cn/post/6844903975859257352