How to set GOPRIVATE environment variable
GoEnvironment VariablesGo ModulesGo Problem Overview
I started working on a Go
project and it uses some private modules from Github private repos and whenever I try to run go run main.go
it gives me a below 410 Gone
error:
> verifying github.com/repoURL/[email protected]+incompatible/go.mod: github.com/repoURL/[email protected]+incompatible/go.mod: reading https://sum.golang.org/lookup/github.com/!repoURL/[email protected]+incompatible: 410 Gone
I can easily clone private repo from terminal which means my ssh
keys are configured correctly. I read here that I need to set GOPRIVATE
environment variable but I am not sure how to do that.
Can anyone answer or point to the relevant tutorial?
Go: v1.13, OS: macOS Mojave
Go Solutions
Solution 1 - Go
Short Answer:
go env -w GOPRIVATE=github.com/repoURL/private-repo
OR
If you want to allow all private repos from your organization
go env -w GOPRIVATE=github.com/<OrgNameHere>/*
Long Answer:
Check "Module configuration for non-public modules" for more information:
> The GOPRIVATE environment variable controls which modules the go command considers to be private (not available publicly) and should therefore not use the proxy or checksum database. The variable is a comma-separated list of glob patterns (in the syntax of Go's path.Match) of module path prefixes. For example,
>
> > GOPRIVATE=*.corp.example.com,rsc.io/private >
>
> causes the go command to treat as private any module with a path prefix matching either pattern, including git.corp.example.com/xyzzy, rsc.io/private, and rsc.io/private/quux.
. .
> The 'go env -w' command (see 'go help env') can be used to set these variables for future go command invocations.
Note on the usage of ssh:
If you use ssh to access git repo (locally hosted), you might want to add the following to your ~/.gitconfig
:
[url "ssh://[email protected]/"]
insteadOf = https://git.local.intranet/
for the go
commands to be able to access the git server.
Solution 2 - Go
Just a follow up on the usage of ssh, this is the command used to get it working:
GitHub:
git config --global url."git@github.com:".insteadOf "https://github.com/"
Bitbucket:
git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"
Solution 3 - Go
If zsh use:
go env -w GOPRIVATE='gitlab.my_firm_name.com/*'
otherwise get
zsh: no matches found: GOPRIVATE=gitlab.my_firm_name.com/*