2016-06-13 17 views
0

Wir bauen mehrere GO-Projekte auf unserem gitlab ci und wir haben das folgende Dilemma.Global GOPATH in gitlab-ci

Wenn Projekte mit einem globalen GOPATH Gebäuden (wie auf lokalen Rechnern), baut das zu lange dauern, da alle Abhängigkeiten von jedem Build geholt werden.

Auf der anderen Seite, wenn sie durch gehen bekommen, eine lokale GOPATH und das Zwischenspeichern den Ordner erstellt definieren, erhalten wir bauen schnell, aber umständlich Projekt-Setups, in denen das Projekt selbst nicht auf dem GOPATH etc ist ...

es wäre schön, wenn es global Caching aber Gitlab-ci erlauben nicht, dass:

ACHTUNG: /build/src/git.my.repo: nicht unterstützt: außerhalb bauen Verzeichnis

+1

Verkaufen Sie nicht Ihre Abhängigkeiten? Das würde das Fetch-Everything-on-Build-Problem lösen, da alle Deps sicher in Ihr Repository eingecheckt würden. Vendoring sorgt auch für zuverlässig wiederholbare Builds, selbst wenn einer Ihrer Deps eine bahnbrechende Änderung vornimmt oder sein Repo verschwindet. Go 1.5+ hinzugefügt in direkter Unterstützung für das Vendoring, wo alles in '/vendor /' so behandelt wird, als wäre es in '$ GOPATH/src' mit dem Go-Tool für alle Builds dieses Projekts. t müssen sogar Ihre Importlinien ändern. – Kaedys

Antwort

1

I würde @Kaedys auf diesem einen zustimmen. Wenn Sie herstellerabhängige Abhängigkeiten verwenden und Ihre vendor-Verzeichnisse zwischenspeichern, müssen Sie sie nicht für jeden Build abrufen. Wenn Sie nicht bereits beliefern, gibt es eine Handvoll tools to help you.

Ich habe gesehen, lokale GOPATH zu arbeiten. Ich bin mir nicht sicher, wie genau Sie es implementiert haben, aber Sie können einen Blick auf here for an example werfen, wie es gemacht werden kann. Sie haben eine lokale Umgebung, die GOPATH auf das Projektverzeichnis innerhalb des Verzeichnisses setzt.

Verwandte Themen