2015-10-29 32 views
8

kann nicht gefunden werden Ich habe meine .gitlab-ci.yml-Datei in den typischen drei Phasen eingerichtet: Test, Build, Deploy. Während der Erstellungsphase führe ich einen Befehl aus, der mein Projekt kompiliert und in einen Tarball legt. Die Build-Phase scheint erfolgreich ausgeführt zu werden, da sie in die Bereitstellungsstufe übergeht. Die Bereitstellungsstufe sagt jedoch, dass sie den Tarball nicht finden kann. Ist es in einem anderen Verzeichnis? Was ist damit passiert? Vielen Dank.Gitlab CI: Ausgabe der Buildstufe

+1

Verwandte https://about.gitlab.com/2016/03/10/setting-up-gitlab-ci-for-ios-projects/ Sie können 'Artefakte: Pfade:' erstellen. Das erlaubt später einen Download. – Unapiedra

+0

Ja, ich bin mir ziemlich sicher, dass das hinzugefügt wurde, nachdem ich das gepostet habe. – sajattack

Antwort

3

Für jeden Test bereinigt gitlab-ci den Build-Ordner, daher sind die Ausgabedateien der Build-Phase in der Bereitstellungsphase nicht verfügbar.

Sie müssen Ihr Projekt auch in der Bereitstellungsphase neu erstellen.

Die "Stufen" sind nur nützlich, um Ihre Tests zu ordnen, d. H. Vermeiden, einen Bereitstellungstest durchzuführen, wenn ein Build-Test fehlgeschlagen ist.

EDIT: Seit Gitlab 8.6 ist es möglich, unter Verwendung von dependencies feature

+0

Seltsam. Wäre es besser, die Zusammenstellung in einen separaten Job zu stellen? Wie sieht der DRY-Weg aus? – sajattack

+0

Oh ja, es wäre besser, aber ** zu diesem Zeitpunkt ** können Sie Ausgaben von anderen Stufen/Tests nicht wiederverwenden. – jeremf

4

Ich war überrascht, das gleiche Verhalten zu sehen (auf Gitlab 8.4).

Ich benutze cmake Makefiles zu erstellen, zu bauen make dann, und dann make test den Test auszuführen. Ich führe alle diese in einem Verzeichnis build/.

Ich möchte mich nicht wiederholen und leicht identifizieren, welche Schritte fehlschlagen. Als solche habe ich verschiedene Gitlab-ci Stufen erstellt: cmake, make, test usw. ich dann Gitlab-ci sagen das build Verzeichnis mit dem cache Option zu halten:

cache: 
    key: "$CI_BUILD_REF_NAME" 
    untracked: true 
    paths: 
     - build/ 

denke ich, dass die key Option behält das gleiche Build-Verzeichnis für alle Stufen auf dem gleichen Zweig. Siehe die gitlab-ci doc hier: http://doc.gitlab.com/ce/ci/yaml/README.html#cache

EDIT: Verwenden Sie nicht die cache dafür! GitLab implementiert wiederverwendbare Artefakte zwischen den Stufen in 8.4: https://gitlab.com/gitlab-org/gitlab-ce/issues/3423 Die CI-Runner müssen angepasst werden, um dies zu unterstützen. Siehe: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/336

+0

Ich kam zurück zu Posten # 3423, aber ich sehe, du hast es schon getan. +1. Es sieht so aus, als ob die Funktion ein paar Mal zurückgesetzt wurde. – sajattack