2016-07-07 9 views
3

Ich verwende , um ein Projekt Abhängigkeiten aufzulösen. Mein Problem ist, dass Repositories für Abhängigkeiten möglicherweise entfernt werden und mein Projekt nicht erstellen würde.Wie go Abhängigkeiten zu speichern?

Ich versuche, eine Lösung zu finden, um Abhängigkeiten in Artifactory oder einer anderen Lösung zu speichern.

Bitte um Rat.

Grüße.

Antwort

1

Okay, also GoDeps kann der Standard Weg sein, dies zu tun, aber ich fand es normalerweise ein bisschen kompliziert. Meiner Meinung nach, verwenden Sie ein Makefile, das ein benutzerdefiniertes GoPath setzt und nur Abhängigkeiten mit Ihrem Code einbaut (entfernen Sie deren .git-Ordner). Auf diese Weise friert die Version ein und niemand muss eine godep restore oder etwas ähnliches tun.

Sie können Rezepte wie make deploy erstellen, die Ihren Code erstellen, GoFmt ausführen, die pkg-Dateien bereinigen, sie in Ihrem benutzerdefinierten GoPath bin/ installieren und dann einfach loslegen und die Binärdatei ausführen.

Sie können einen anderen wie make install haben, der alle fehlenden Abhängigkeiten installiert.

Ich habe es geschafft, eine Uhr mit dieser auf meinem Makefile zu erstellen, um auf der Suche nach Änderungen auf einem Linux-basierten System mit inotify-tools und Call Rebuild weiter zu suchen.

Intern werden alle Befehle Standard go Befehle verwenden, aber Sie werden die GoDeps loswerden und JSON beibehalten. Um eine Abhängigkeit zu aktualisieren, ist dies möglicherweise ein Problem, da Sie das gesamte Verzeichnis manuell in Ihren benutzerdefinierten Pfad kopieren und den Ordner .git/entfernen müssen.

Unsere Firma verwendet diese Methode und scheint für uns recht nett zu arbeiten.

Plus diese Methode bringt Sie im Grunde die $GOPATH/src/github.com/repoName/ Art von Pfaden.

Wenn ich nicht klar bin, lassen Sie es mich wissen, ich werde einen Gith auf Github hinzufügen.

+3

Alternativ können Sie einfach govendor (https://github.com/kardianos/govendor) verwenden, das alles für Sie erledigt, ohne ein benutzerdefiniertes '$ GOPATH' in Ihrem Makefile zu setzen (was die Gelegenheitsnutzung von' go build 'und ähnlich, und offen gesagt,' make' ist für solche Dinge langsam wie die Hölle. Govendor speichert Ihre Deps in /vendor, die sie mit Ihrem Code einchecken und so zuverlässige Builds ermöglichen. Solange Sie Go 1.6 (oder 1.5 und den Hersteller-Envvar) verwenden, benötigen Sie kein benutzerdefiniertes "$ GOPATH", da das "Go" -Tool automatisch den '/ vendor'-Ordner bevorzugt. – Kaedys

+1

Ahh stackoverflow .. Du bringst mir jeden Tag etwas Neues bei! Danke, ich schaue mal rein. – ishaan

+0

Überprüfen Sie nicht Binärdateien mit Ihrem Quellcode in Ihre ** Quelle ** Kontrolle. Nicht. – JBaruch