Go Mod私有仓库

9

我有一个私有仓库,我的main.go文件导入了它。当我进行go build时,出现以下错误:

找不到路径所对应的模块

对于私有仓库,我需要做些特殊的处理吗?我已经搜索过谷歌,但没有找到任何好的信息。使用dep时工作正常。

4个回答

14

做这个

git config --global --add url."git@your-repo.com:".insteadOf "https://your-repo.com/"
export GOPRIVATE='your-repo.com'

确保你通过ssh进行的git克隆工作正常。


请问您能提供一个填写这些 your-repo 的示例吗? - undefined
一个例子:gitlab.com - undefined

3

我从这个SO问题中复制了答案。

我在Medium上写了一个解决方案:使用私有Git存储库的Go模块

我们处理它的方式基本与Alex Pliutau的答案相同,该博客提供了更详细的示例,说明如何使用来自GitHub / GitLab / BitBucket的令牌设置您的git配置。 它还提供了一个使用私有存储库的模块的工作Dockerfile示例。

GitLab的相关部分:

git config --global \
  url."https://oauth2:${personal_access_token}@privategitlab.com".insteadOf \
  "https://privategitlab.com"

#or 

git config --global \
  url."https://${user}:${personal_access_token}@privategitlab.com".insteadOf \
  "https://privategitlab.com"

我希望它有帮助。


1
您应该使用SSH密钥来获取您的存储库,检查您的SSH密钥是否也在系统密钥链中:

ssh-add -K ~/.ssh/id_rsa


一个重要的点是,Docker 将要看到的密钥的默认名称是 id_rsa(以及其他一些默认值)。这非常重要。如果您的密钥具有不同的名称,则无法正常工作。此外,我不确定为什么您需要 -K 标志。 - Alexis Wilke

0
鉴于这样的私有仓库经常在活跃开发中,我个人只需要将它克隆到我的$GOPATH的“适当”位置并像任何其他项目一样使用源代码管理(例如git)。添加SSH密钥就像Rodrigo的答案一样很好,但是如果您已经在积极开发私有仓库,将其克隆到正确的目录不是与能够使用go get相比一个困难的步骤。
例如,对于托管在Github上的私有仓库,我会先cd$GOHOME/src/github.com/git-username-for-repo,然后git clone the-repo

如果您只有一个报告,那么这很好运作。但是如果您有100个报告......(即A依赖于B,并且您正在为A构建一个Docker,则该Docker必须检索B)。 - Alexis Wilke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接