Warum GOPROXY wichtig ist und was man wählen sollte

Hinweis:柴油博客wurde aktualisiert,嗯日本青蛙GoCenterzu Rechnung zu tragen

Ab Go 1.13 sind Go- module der Standard-Paketmanager in Golang, der automatisch bei der Installation zusammen mit einer Standard-GOPROXY aktiviert wid。

Aber welche Art von Konfiguration sollten Sie wählen angesichts dieser GOPROXY sowie Ihrer eigenen Go-Modulpakete, die Sie vor öffentlicher Einsichtnahme schützen müssen?Wie können Sie verhindern, dass Ihre öffentlichen und privaten golang - ressourcenen zu einem verschlungenen Knoten werden?

Lassen Sie uneninen Blick darauf werfen, wozu eine GOPROXY dient und welche Möglichkeiten Sie haben, um ein schnelles, zuverlässiges und sicheres系统einzurichten..

这是GOPROXY吗?

Eine GOPROXY kontrolliert die Quelle Ihrer go - module - downloads und kann dazu beitragen, dass build deterministisch and sicher sinind。

beder Entwicklung in Golang vor der GOPROXY-Ära wurden Modul-Abhängigkeiten direkt von ihren Quellcode-Repositories in VCS-Systemen wie GitHub, Bitbucket, Bazaar, Mercurial oder SVN heruntergeladen。Abhängigkeiten von Dritten werden in der Regel aus öffentlichen Quellcode-Repositories heruntergeladen。私人Abhängigkeiten müssen VCS-System认证,在他们的gespeichert信德,嗯die Quelldateien des modules herunterzuladen。

工作流程,工作流程,工作流程,工作流程,工作流程,工作流程,工作流程,工作流程,工作流程,工作流程,工作流程:Unveränderlichkeit和Verfügbarkeit。模块können vom Autor gelöscht oder Versionen bearbeitet werden。奥沃斯·泽纳里恩斯·施莱赫特实践安格希恩·沃登,kommen sie häufig vor。

Eine GOPROXY verwenden

Das Setzen einer GOPROXY für Ihre golang - entwicklung - oder CI-Umgebung leitet go - module - download - anfragen an ein Cache-Repository um。

Die Verwendung einer GOPROXY für Modulabhängigkeiten hilft, Die geforderte Unveränderlichkeit durchzusetzen。Durch die Rückgabe des modules aus dem Cache von GOPROXY wiimmer der gleiche Code für eine angeforderte Version bereitgestellt, auch wenn das module in jüngerer Zeit im vc - repository unzulässigerweise verändert wurde。

Der Cache des GOPROXY trägt auch zur ständigen Verfügbarkeit des modules bei, selbst wenn das Original im VCS-Repository zerstört wid。

Es gibt verschiedene Möglichkeiten, GOPROXY zu verwenden, je nachdem, welche Quelle für die Abhängigkeiten von Go-Modulen Sie erwarten。

Offentliche GOPROXY

Eine öffentliche GOPROXY ist ein zentrales Repository, das Golang-Entwicklern auf der ganzen Welt zur Verfügung steht。Es hostet Open Source-Go-Module, die von Dritten in öffentlich zugänglichen vcs - project - repositories zur Verfügung gestellt wurden。Die meisten, wie zum Beispielproxy.golang.orgwerden der Golang-Entwicklergemeinde kostenlos zur Verfügung gestelt。

Um eine öffentliche GOPROXY zu verwenden, setzen Sie die Golang-Umgebungsvariable auf deren网址:

$ export GOPROXY=https://proxy.golang.org

Die obige einstein leitet alle Anfragen zum Herunterladen von Modulen and as go - module - repository um, as vom Golang-Team gepflegt wid。下载冯埃纳öffentlichen GOPROXY können viel schneller盛als直接aus dem VCS,indem einer模块- archivdatei heruntergeladen bird

Neben der Durchführung von下载kann eine öffentliche GOPROXY den golangentwicklern auch detailliertere Informationen über die darin enthaltenen模块liefen。死Benutzeroberfläche unterpkg.go.devermöglicht关于统计的数学模型。

私人Go-Module

In der Regel werden In GoLang-Projekten sowohl Open Source- als auch private Modulabhängigkeiten verwendet。Einige Nutzer verwenden die Umgebungsvariable GOPRIVATE, um eine Liste von Pfaden anzugeben, die GOPROXY和GOSUMDB umgehen和private Module direct von diesen vc - repositories herunterladen müssen。Sie können zum Beispielproxy.golang.orgverwenden, um alle开源模块abzurufen, aber nur私有模块von den Servern Ihres unternemen anzufordern。

Um dieses öffentliche GOPROXY zusammen mit privaten Modulen zu verwenden, setzen Sie die Golang-Umgebungsvariablen die folgt:

$ export GOPROXY=https://proxy.golang.org,direct $ export GOPRIVATE=*.internal.mycompany.com

Diese Verwendung von GOPRIVATE stellt auch sicher, dass Ihre Verwendung dieser privaten Module nicht durch Anfragen an einen öffentlichen GOPROXY- und Checksum-Datenbankserver in einem offenen Netzwerk "geleakt" ward。Eine weitere Verwendung der GONOSUMDB-Variable, die Verweise auf private Go-Module enthält。Diese Konfiguration ermöglicht es dem Go-Client zwar, sowohl öffentliche als auch private Modulabhängigkeiten aufzulösen, erzwingt aber keine Unveränderlichkeit oder Verfügbarkeitsanforderungen für private Module。

单独GOPROXY

Eine private GOPROXY ist Eine, die Sie installieren, um sowohl öffentliche als auch private Go-Module in Ihrer eigenen Infrastruktur zu speichern。

Öffentliche模块werden lokal zwischengespeichert, indem eine öffentliche GOPROXY in einem binären Repository-Manager wie JFrog Artifactory als Proxy verwendet wd。einem Repository aus ihren VCS-Repository zwischengespeichert中的私有模块werden ebenfalls。Auf diese Weise kann die Unveränderlichkeit und Verfügbarkeit sowohl für öffentliche als auch für private Go-Module gewährleistet werden。

在Artifactory weird eine Kombination aus einem远程存储库fürproxy.golang.org, einem远程- go - Module -Repository, das auf private GitHub-Repositories (für private Module) verweist und einem lokalen go - Module -Repository zu einem einzigen virtuellen Repository kombiniert werden, auf das als eine Einheit zugegriffen werden kann。

所以legen Sie Ihre GOPROXY für ein virtuelles Repository in Artifactory namens“go”fest:

$ export GOPROXY="https://:@my.artifactory. "server/artifactory/api/go/go $ export GONOSUMDB="github.com/mycompany/*,github.com/mypersonal/*"

在Ihren privaten VCS-Repositories keine Einträge在öffentlichen Checksum-Datenbank untersum.golang.orghaben, müssen sie vom Go-Client von dieser Prüfung ausgeschlossen werden。Durch Setzen von GONOSUMDB auf Ihre privaten VCS-Repositories wid dies erreicht und verhindert, dass Ihre-Befehle für diese privaten Module nicht aufgrund von Prüfsummenfehlern fehlschlagen。

在diesel Konfiguration ist sichergestellt, dass keine Verweise auf private Module "geleakt" sind, während gleichzeeitig die Unveränderlichkeit und Verfügbarkeit sowohl der öffentlichen als auch der private Module erzwungen wind。

Knoten durchtrennen

Wie Sie sehen, bietet die Verwendung eines private GOPROXY die größte Gewissheit, Zuverlässigkeit und Sicherheit。

Sie können auch die Auflösung von Modulabhängigkeiten durch die Netzwerknähe Ihrer privaten GOPROXY zu Ihren Build-Tools beschleunigen。JFrog Artifactory kann dort installiert werden, wo Sie es am meisten brauchen: lokal oder in der Cloud, oder als SaaS-Abonnement bei allen drei groen ßen Public Cloud- anbietern。

Diese Vorteile sind außerdem nicht nur auf die Go-Entwicklung beschränkt。Die meisten technology eunternehmen verwenden mehr als eine Sprache and mehrere Paketmanager。Wenn beispielsweise Code in Golang geschrieben wd, dann könnte npm für die Benutzeroberfläche verwendet werden, Docker könnte für die Verteilung von Bits verwendet werden und Helm könnte für die Bereitstellung von Anwendungen auf K8s verwendet werden。

Durch die Unterstützung von über 27 Pakettypen kann Artifactory einen determinisschen, stabilen and sicheren software entwicklunsprozess für alle Anwendungen fördern。Holen Sie sich eine kostenlose Testversion und entdecken Sie, wie Artifactory Ihre Befehlszeilen lenken kann und Ihrer软件größtmögliche Freiheit schenkt。