Kopieren von Dateien von einem Verzeichnis in ein anderes in jenkins
Ich versuche mich zu bewegen, meine Ergebnisse auf einer öffentlichen Webseite.
Ich ein "Post-build action" > "Post-build task", um ein Skript auszuführen.
Dem Skript ist:
cp -r /var/lib/jenkins/jobs/instrumentation-tests/htmlreports/HTML_Report//var/www/html/test/
Jenkins Ausgänge: cp: Verzeichnis " /var/www/html/test existiert nicht
Wenn ich angemeldet bin als user jenkins auf der linux Maschine läuft jenkins, ich kann navigieren Sie zu der Quelle und SEHE, dass es Dateien gibt es derzeit. Ich kann zu dem Ziel navigieren, und sehen, dass es existiert.
Auch, ich habe versucht mit dem Befehl aus dem terminal, als die jenkins-Benutzer, und die cp erfolgreich abgeschlossen.
Vielleicht ist dieser job ausgeführt wird, auf einen slave?
Ich habe dies auf einem slave, könnte das das Problem sein? Wie kann ich es beheben?
Könnte man scp verwenden, kopieren Sie die Dateien auf einem remote-Standort.
Sie können Bearbeiten von Dateien auf der master-von einem Groovy Postbuild "Skript", denn es läuft immer auf master. Oder Sie kann der Auslöser eine untergeordnete Arbeit, die gebunden ist, um zu laufen auf dem master-Knoten, die nicht einfach cp als shell-build-Schritt.
InformationsquelleAutor EGHDK | 2016-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie erwähnen, in den Kommentaren, Ihre test-Ergebnisse generiert werden, die während eines builds auf einem slave-Rechner. Daher werden Sie versuchen, kopieren Sie die Dateien auf
/var/www
auf die Sklaven, nicht die Jenkins-master-server.Gibt es ein paar verschiedene Möglichkeiten, wie Sie könnte dieses Problem lösen:
Sicherzustellen, dass die build geschieht auf dem master-server.
Können Sie dies, indem Sie "Beschränken, wo dieses Projekt ausgeführt werden kann" auf der job-Konfiguration-Seite und die Eingabe von "master" in das Textfeld ein.
Dadurch wird sichergestellt, dass Ihre Datei kopieren wird am Ende ein zu bauen, vorausgesetzt, dass die Jenkins-Benutzer hat Schreibrechte.
Verwenden Sie die Veröffentlichen über SSH plugin zu veröffentlichen, die Dateien direkt zu
/var/www
auf dem Jenkins master, aus einer anderen Maschine.Dies hat den Vorteil, dass es funktionieren wird, egal, welche Jenkins build-Maschine der Aufbau stattfindet.
Könnten Sie auch der Aufteilung der Aufgabe in zwei Teile: einen Auftrag zum ausführen der tests und generieren Sie die Ergebnisse, und ein anderer job veröffentlichen die Testergebnisse.
Dem ersten job könnte auf jedem Rechner laufen, und würde speichern Sie die erzeugten HTML-Dateien mit dem "Archive der Artefakte" post-build-Aktion. Es würde dann beginnen Sie den zweiten Auftrag über den "Build-jobs" post-build action — um zu tun im Verlag.
Des zweiten Auftrags kann die Verwendung der beiden genannten Ansätze: entweder veröffentlichen mithilfe von SSH, oder dafür sorgen, dass es läuft auf dem master und mit einem einfachen shell-Schritt mit
cp
.In beiden Fällen würde die Copy Artifact plugin kopieren Sie die archivierten HTML-Dateien aus dem upstream bauen.
InformationsquelleAutor Christopher Orr