Jak ustawić zmienną środowiskową GOPRIVATE

15

Zacząłem pracować nad Goprojektem, który wykorzystuje niektóre prywatne moduły z prywatnych repozytoriów Github i przy każdej próbie uruchomienia go run main.gopojawia się następujący 410 Gonebłąd:

weryfikacja github.com/repoURL/[email protected]+incompatible/go.mod: github.com/repoURL/[email protected]+incompatible/go.mod: czytanie https: //sum.golang. org/lookup/github.com/!repoURL/[email protected]+ niezgodny : 410 Gone

Mogę łatwo sklonować prywatne repozytorium z terminala, co oznacza, że ​​moje sshklucze są poprawnie skonfigurowane. Przeczytałem tutaj , że muszę ustawić GOPRIVATEzmienną środowiskową, ale nie jestem pewien, jak to zrobić.

Czy ktoś może odpowiedzieć lub wskazać odpowiedni samouczek?

Go: v1.13, OS: macOS Mojave

UsamaAmjad
źródło
man $(basename $SHELL)
Peter,
1
Jest na to pomoc :go help module-private
Soroush

Odpowiedzi:

24

Krótka odpowiedź:

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

LUB

Jeśli chcesz zezwolić na wszystkie prywatne repozytoria ze swojej organizacji

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

Długa odpowiedź:

Aby uzyskać więcej informacji, zobacz „Konfiguracja modułów dla modułów niepublicznych” :

Zmienna środowiskowa GOPRIVATE kontroluje, które moduły komenda go uważa za prywatne (niedostępne publicznie) i dlatego nie powinna używać bazy danych proxy ani sumy kontrolnej. Zmienna jest oddzieloną przecinkami listą wzorców globu (w składni ścieżki Go.Match) prefiksów ścieżki modułu. Na przykład,

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

powoduje, że komenda go traktuje jako prywatny dowolny moduł z przedrostkiem ścieżki pasującym do dowolnego wzorca, w tym git.corp.example.com/xyzzy, rsc.io/private i rsc.io/private/quux.

. .

Komendy „go env -w” (patrz „go help env”) można użyć do ustawienia tych zmiennych dla przyszłych wywołań komendy go.


Uwaga na temat korzystania z ssh:

Jeśli używasz ssh, aby uzyskać dostęp do git repo (hostowany lokalnie), możesz dodać następujące elementy do ~/.gitconfig:

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

aby gokomendy mogły uzyskać dostęp do serwera git.

ifnotak
źródło
1
Dzięki! Działa teraz, więc sztuczka polegała na użyciu adresu URL ze znakiem zastępczym z nazwą organizacji. go env -w GOPRIVATE=github.com/{OrgNameHere}/*
UsamaAmjad