Wie zu verwenden GoLang mit einem eigenen Gitlab-repo?
Gitlab ist eine Kostenlose, open-source-Weg zu host private .git
repositories, aber es scheint nicht zu funktionieren, mit GoLang. Wenn Sie ein Projekt erstellen generiert es eine URL der form:
git@1.2.3.4:private-developers/project.git
wo:
1.2.3.4
ist die IP-Adresse des gitlab-serverprivate-developers
ist eine Benutzergruppe, die Zugriff auf den privaten repo -
Golang 1.2.1 scheint nicht zu verstehen, diese syntax.
go get git@1.2.3.4:private-developers/project.git
Ergebnisse in:
package git@23.251.148.129/project.git: unrecognized import path "[email protected]/project.git"
Gibt es eine Möglichkeit, diese zu arbeiten?
- das ist nicht, wie
go get
funktioniert, verwendet es import-Pfade, nicht direkt scm-uris. Hat Ihr gitlab haben https git-Zugriff (wie github)? - Ich bin mir nicht sicher. Es wurde installiert, die über dieses Verfahren: cloud.google.com/solutions/gitlab . Gibt es eine Möglichkeit, ich kann das sagen?
- Ich bin nicht wirklich vertraut mit gitlab, aber ich weiß, dass Sie zusätzliche Unterstützung für
go get
für öffentliche Projekte: github.com/gitlabhq/gitlabhq/pull/5958. Schlimmsten Fall kannst du immer nur die Initiale Klon des repo in Ihre GOPATH manuell - leider habe ich ein eigenes repo für diese. Ich bin mit dem 'worst case' für jetzt :).
- Möglich, Duplikat der What ist der richtige Weg, um "go get" ein eigenes repository?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses Problem ist nun gelöst, in Gitlab 8.* aber ist immer noch unintuitiv. Die schwierigste Herausforderung ist in der Tat
go get
und die folgenden Schritte können Sie überwinden diese:Erstellen eines SSH-Schlüssel-paar. Werden Sie sicher, dass Sie nicht überschreiben Sie eine vorhandene paar, das ist standardmäßig gespeichert in
~/.ssh/
.Erstellen Sie eine neue Geheimnis Variable in Ihrem Gitlab-Projekt. Verwenden
SSH_PRIVATE_KEY
als Schlüssel und den Inhalt Ihrer private Schlüssel als Wert.Ändern Sie Ihre
.gitlab-ci.yml
mit einembefore_script
.Fügen Sie die öffentlichen Schlüssel aus dem Schlüsselpaar in Schritt 1 erstellt haben, als eine Bereitstellen Schlüssel in das Projekt, das Sie brauchen, um
go get
.before_script
Abschnitt:- git config --global url."[email protected]:".insteadOf "https://gitlab.com/"
Diesen Befehl ausführen:
Vorausgesetzt, Sie haben die richtigen Berechtigungen zum
git clone
repository, das machtgo get
Arbeit für alle repos auf dem server1.2.3.4
.Getestet habe ich diese mit go, version 1.6.2, 1.8 und 1.9.1.
Wenn
go get
kann nicht Holen die repo, können Sie immer das erste Klonen mit git direkt:Des tools wird dann normal arbeiten, erwarten, dass für
go get -u
die verlangen, dass die-f
Flagge, da die git-remote nicht mit der kanonischen Pfad importieren.Gitlab unterstützt
go get
nativ.go get
Ausgabe einen http-request auf die url, die Sie bieten und den Blick für die meta-tags, die auf den exakten source-control-Pfad.Für mein gitlab-installation dies ist
mygitlabdomain.com/myProject/myRepo
. Für Sie ich nehme an, dies wäre1.2.3.4/private-developers/project
.Leider scheint es nur zu geben, die http-scm-Pfad, nicht die ssh-Pfad, also ich musste meine Anmeldeinformationen zu Klonen. Sie können problemlos hantieren mit der Fernbedienung im lokalen repository, nachdem es-Klone, wenn Sie möchten, aktualisieren Sie die ssh-url.
Testen kann man die url durch Stossen
http://1.2.3.4:private-developers/project?go-get=1
- und anzeigen-Quelle und auf der Suche nach dem meta-tag.Für das Protokoll, diese arbeiten außerhalb gehen mit gitlab 7.3.2 und, wie JimB hat beobachtet, kann verwendet werden, als ein workaround. Ich finde, dass ich werde aufgefordert, Benutzername/Passwort, auch wenn ein SSH-Schlüssel registriert ist, mit gitlab:
Alternativ kann ich auch mit dem SSH-äquivalent, welche, da habe ich einen SSH-key registriert mit gitlab, vermeidet den Anweisungen:
Weder arbeitet mit gehen derzeit. Ein Update möglicherweise in 7,9 aber ich hatte noch keine Gelegenheit, es zu testen:
kommenden bugfix
Können Sie setup git-Anmeldeinformationen ein, und Gehen Sie verwenden werden:
git config credential.helper store
echo https://your-github-username:[email protected] >> ~/.git-credentials
Für HTTPS privaten gitlab repo, @Rick Smith ist genug. Hier ist eine Entschädigung für die HTTP-repo, führen Sie zunächst den Befehl:
verwenden Sie dann unten
go get
Befehl aus, um die golang-Projekt:Vom dep version 5.2, die
dep
unterstützt private repositories für Gitlab privaten repositories.Auf .netrc - Datei, können Sie Ihren Gitlab Benutzernamen und das access-token für den Zugriff auf private repositories.
.netrc
Datei in deinem $HOME-Verzeichnis.netrc
mit Ihrem Gitlab Anmeldeinformationendep
Befehl zu lösen private Pakete. In diesem Fall