Für Golang-Entwickler ist die Verwaltung und Installation von Go-Modulen im Allgemeinen unkompliziert, wenn sie mit öffentlichen Repositorys arbeiten. Schwieriger wird es jedoch, wenn Sie mit privaten Go-Modulen arbeiten müssen.
Die Go-Module-Toolchain bietet keinen integrierten Mechanismus für die Arbeit mit privaten Modulen, der über die Verwendung eines privaten GOPROXY hinausgeht, und die ordnungsgemäße Einrichtung und Wartung eines solchen ist nicht für jeden Entwickler oder jede Organisation eine Option. Einige Paket-Repository-Dienste unterstützen die Arbeit mit privaten Go-Modulen, bieten Entwicklern jedoch im Allgemeinen nicht die sauberste Erfahrung.
Aus diesem Grund arrangieren wir in den meisten Fällen komplizierte Git-Konfigurationen (.netrc oder .gitconfig) in Kombination mit einigen Go-Umgebungsvariablen, um die Authentifizierung mit unseren privaten Repositorys zu verwalten, wenn wir go get, go install oder go mod download verwenden .
Das Problem bei diesen Git-Konfigurationen besteht darin, dass sie nicht für alle Entwickler offensichtlich sind und möglicherweise unsicher sind, da möglicherweise die Speicherung von Klartext-Anmeldeinformationen im Dateisystem erforderlich ist. Diese Probleme werden noch problematischer, wenn CI/CD-Systeme konfiguriert, Docker-Images erstellt usw. werden.
Als langjährige Golang-Entwickler (aus einer Zeit, als Go-Module noch nicht einmal existierten) haben wir immer von einer Zeit geträumt, in der die Arbeit mit privaten Go-Bibliotheken genauso einfach und leistungsstark sein würde wie die Arbeit mit öffentlichen.
Stellen Sie sich vor, Sie entwickeln und übertragen Ihre privaten Go-Bibliotheken auf GitHub und holen sich sofort die neuen Änderungen aus dem Quellcode Ihres Projekts, indem Sie nur die Umgebungsvariable GOPROXY festlegen. Keine kniffligen und unsicheren Git-Konfigurationen, keine selbst gehostete GOPROXY-Wartung, keine komplexen und fehleranfälligen Veröffentlichungsworkflows und das gleiche Setup für Ihre lokale Entwicklungsmaschine, Dockerfile und CI/CD-Umgebung.
Begrüßen Sie goproxy.dev, einen privaten GOPROXY-Dienst, der in GitHub integriert ist, um Ihnen eine nahtlose Installation privater Go-Module zu ermöglichen.
Melden Sie sich einfach mit Ihrem GitHub-Konto bei goproxy.dev an, gewähren Sie Zugriff auf die privaten Repositorys, die Sie verwenden werden, und exportieren Sie Ihre GOPROXY- und GONOSUMDB-Umgebungsvariablen.
export [email protected],proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Diese Go-Umgebungsvariablen können direkt über Ihre Shell-Konfiguration (.zshrc, .bashrc usw.) oder mit go env -w festgelegt werden.
Dann können Sie Ihre üblichen Go-Befehle ausführen, um Ihre privaten Module zu installieren und herunterzuladen.
go get github.com/your-organization/[email protected] go install github.com/your-organization/go-module/cmd ... go mod download
Für die Integration mit goproxy.dev müssen lediglich zwei Umgebungsvariablen eingerichtet werden. Der beste Weg, dies während eines Docker-Builds zu tun, ist die Verwendung der Docker-Build-Secrets-Funktion.
In Ihrer Docker-Datei:
COPY go.mod go.sum ./ RUN --mount=type=secret,id=GOPROXY \ GOPROXY=$(cat /run/secrets/GOPROXY) \ GONOSUMDB=github.com/your-organization \ go mod download RUN go build .
Und der Lauf:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Konfigurieren Sie einfach ein Geheimnis für Ihre GitHub-Aktionen, das Ihre GOPROXY-URL enthält, und verwenden Sie es in Ihren Workflows:
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
Mit goproxy.dev haben Sie die beste Entwicklererfahrung, wenn Sie Bibliotheken mit Go nutzen. Unabhängig davon, ob Sie auf öffentliche Open-Source-Bibliotheken oder private Module Ihrer Organisation angewiesen sind, verfügen Sie über einen einheitlichen Arbeitsablauf: Richten Sie Ihre GOPROXY-Umgebungsvariable ein und rufen Sie Abhängigkeiten für eine bestimmte Version, einen Git-Zweig oder ein Commit ab.
Erfahren Sie noch heute mehr und beginnen Sie mit goproxy.dev, indem Sie sich für unsere 14-tägige kostenlose Testversion anmelden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3