如何设置GOPRIVATE环境变量

iecba09b  于 2023-04-18  发布在  Go
关注(0)|答案(4)|浏览(459)

我开始在一个Go项目上工作,它使用了Github私有仓库中的一些私有模块,每当我尝试运行go run main.go时,它都会给我一个下面的410 Gone错误:
验证github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang.org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible:410人走了
我可以很容易地从终端克隆私有仓库,这意味着我的ssh密钥配置正确。我在这里读到我需要设置GOPRIVATE环境变量,但我不知道如何做到这一点。
有人能回答或指出相关的教程吗?

**Go:**v1.13,**操作系统:**macOS莫哈韦

knsnq2tg

knsnq2tg1#

简短回答:

go env -w GOPRIVATE=github.com/repoURL/private-repo

如果要允许组织中的所有私有回购

go env -w GOPRIVATE=github.com/<OrgNameHere>/*

长回答:

查看“非公共模块的模块配置”以获取更多信息:
GOPRIVATE环境变量控制go命令认为哪些模块是私有的(不可公开使用),因此不应使用代理或校验和数据库。该变量是模块路径前缀的glob模式(在Go的path.Match语法中)的逗号分隔列表。例如,

GOPRIVATE=*.corp.example.com,rsc.io/private

导致go命令将路径前缀与任一模式匹配的任何模块视为私有模块,包括git.corp.example.com/xyzzy、rsc.io/private和rsc.io/private/quux。
……
'go env -w'命令(参见'go help env')可用于设置这些变量,以便将来调用go命令。

ssh用法说明:

如果使用ssh访问git repo(本地托管),您可能需要将以下内容添加到~/.gitconfig

[url "ssh://git@git.local.intranet/"]
       insteadOf = https://git.local.intranet/

go命令可以访问git服务器。

f87krz0w

f87krz0w2#

如果使用zsh:
go env -w GOPRIVATE='gitlab.my_firm_name.com/*'
否则得到
zsh: no matches found: GOPRIVATE=gitlab.my_firm_name.com/*

k3bvogb1

k3bvogb13#

下面是ssh的用法,这是用来让它工作的命令:
GitHub:

git config --global url."git@github.com:".insteadOf "https://github.com/"

Bitbucket:

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"
xxls0lw8

xxls0lw84#

如果使用zsh,在通配符前添加/,如下所示:go env -w GOPRIVATE=github.com/<OrgNameHere>\/*

相关问题