2016-07-19 6 views
1

Ich laufe auf das Problem, wo ich Abhängigkeiten lokal installieren, es funktioniert gut, ich schiebe auf Continuous Integration Server, und dann bricht es, weil ich auf godep save ./... die Abhängigkeit vergessen.Wie führe ich einen go-Befehl aus, der nur die Abhängigkeiten des Anbieters nutzt?

Wie kann ich den Befehl go ausführen, aber vendor importieren?

Edit:

Ich verwende go1.6. Ich möchte, dass der Befehl fehlschlägt, wenn eine 3rd-Party-Abhängigkeit nicht zu Kreditor auflösen. Mit anderen Worten, gibt es eine Möglichkeit, die Auflösung von Abhängigkeiten in $GOPATH während Tests zu stoppen?

Ich kann die Umgebungsvariable nicht ändern, weil dann keines meiner Projektmodule aufgelöst werden kann. Wie kann ich Lieferantenabhängigkeiten erzwingen?

+0

Dies ist eine vage Frage an mich. Welche Version verwendest du? Haben Sie darüber nachgedacht, das 'vendor'-Verzeichnis zu versuchen, das in 1.5 und höher unterstützt wird? – squiguy

+0

@squiguy bearbeitet. Ich hoffe es macht mehr Sinn. – AJcodez

+2

Dies ist etwas, das mit den Tools, die Sie für den Anbieter verwenden, durchgeführt werden müsste. Ich weiß nicht, ob godep fehlende Pakete auflisten kann, aber ich weiß, dass andere wie 'govendor' und' glide' dafür verwendet werden können. Wenn Sie wollen, dass etwas beim Commit überprüft wird, drücken Sie, usw., dafür sind Git Hooks gedacht. – JimB

Antwort

1

Es gibt keine Möglichkeit zu verhindern, dass der Builder $GOPATH nach Paketen scannt. Es scheint, dass Sie nicht wirklich gut fließen für Abhängigkeiten verwalten. Ich empfehle Ihnen, glide für einen Verkauf zu verwenden.

Die meisten empfohlenen Workflow:

  1. aktuelle Liste von Abhängigkeiten in glide.yaml halten.
  2. Führen Sie glide up nach Änderungen in glide.yaml. Es installiert alle Abhängigkeiten zu vendor Verzeichnis und generiert glide.lock mit festen Paketversionen. Commit glide.lock zu VCS. Do not manuell ändern glide.lock.
  3. Nicht Commit vendor Verzeichnis zu VCS.
  4. Führen Sie glide install auf Ihrem CI- oder Build-Server aus, um Abhängigkeiten von glide.lock zu vendor zu installieren.
  5. Build.

Eine Migration von godep zu glide kann leicht getan werden, weil glide einen Befehl Godeps.json zu glide.yaml zu wandern hat.

Verwandte Themen