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? Danke.
Bei jedem 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 "Phasen" sind nur nützlich, um Ihre Tests zu ordnen, d. h. vermeiden, einen Bereitstellungstest durchzuführen, wenn ein Build-Test fehlgeschlagen ist.
BEARBEITEN: Seit Gitlab 8.6 ist es möglich, Abhängigkeiten
zu verwendenIch war überrascht, dasselbe Verhalten zu sehen (auf GitLab 8.4).
Ich benutze cmake
, um Makefiles zu erstellen, dann make
, um zu bauen, und dann make test
, um den Test zu starten. Ich führe all diese in einem build/
Verzeichnis durch.
Ich möchte mich nicht wiederholen und leicht herausfinden, welche Schritte fehlschlagen. Als solche habe ich verschiedene gitlab-ci Stufen erstellt : cmake
, make
, test
, usw. Ich sage gitlab-ci dann, dass das Verzeichnis build
mit dem% beibehalten wird. Option co_de%:
Ich denke, dass die cache
-Option das gleiche Build-Verzeichnis für alle Stufen behält, die auf demselben Zweig arbeiten. Sehen Sie den gitlab-ci doc hier: Ссылка
BEARBEITEN: Verwenden Sie nicht die key
dafür! GitLab implementierte wiederverwendbare Artefakte zwischen den Stufen in 8.4: Ссылка
Die CI-Läufer müssen angepasst werden, um dies zu unterstützen. Siehe: Ссылка
Tags und Links gitlab gitlab-ci gitlab-ci-runner