2017-07-06 5 views
0

Einer meiner Jobs in Jenkins erzeugt einen HTML-Bericht und verwendet die HTML Publisher Plugin, um von entsprechenden Build zu verknüpfen. In einem solchen Fall, wenn ich direkt auf diese HTML-Seite erhalten möchten (nehmen aktiviert keine Sicherheit, so dass kein Login erforderlich), muss ich einen Link folgen, der die folgende Form besitzt:Jenkins - Veröffentlichen HTML-Bericht an benutzerdefinierte URL

http://hostname:port/job/Some%20Job%20Name/buildNumber/Functional_Test_Report/

Und Für jeden nachfolgenden Build wird die URL basierend auf buildNumber geändert. Ich hätte gerne eine "hübsche" URL, die immer nur den letzten Bericht anzeigt. Sagen Sie etwas wie folgt aus:

http://hostname:port/testReport

Der aktuelle Bericht HTML wird dann automatisch in diese Position jedes Mal gedrückt werden, die Build fertig ist und die Notwendigkeit des Gehens durch Jenkins jedes Mal zu beseitigen, den Bericht zu sehen.

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

0

Sie sollten die BUILD_NUMBER via environment variables verfügbar machen und von dort die URL generieren, wo der HTML-Bericht sein wird. Wie Sie es tun wollen, liegt an Ihnen, aber Sie können es so machen, dass der Jenkins-Job entweder eine Datei mit der Build-Nummer in einer Datei mit einer <script> festlegt, die zu dem URL-Muster weiterleitet, das Sie oben gepostet haben. Es hängt wirklich davon ab, wie Sie Ihre hostname:port eingerichtet haben. Da Sie nur den neuesten Bericht benötigen, können Sie einfach so vorgehen, dass der letzte Auftrag die alte Datei immer überschreibt.

Wir machen etwas ähnliches, obwohl wir die Build-Nummer nur einer PHP-, JSP-, usw. Datei zur Verfügung stellen, so dass die QA weiß, welchen Build sie betrachten. Wir haben dann eine feste URL, zu der sie immer gehen können (hostname:port/status). Wir könnten es umleiten, wenn wir es wirklich wollten.

+0

Danke für Ihre Antwort! Ja, feste URL ist genau das, was ich will. Die Build-Nummer sollte nicht Teil der URL sein und nur die letzte sollte relevant sein. Ich bin mir nicht sicher, ob ich verstehe, wie ich eine solche URL generieren kann, wie Sie es vorgeschlagen haben. Und wie schiebe ich den Bericht dazu? Ich nehme an, es ist ein Ordner, der die Datei index.html enthält. –

+0

Das hängt wirklich davon ab, wie Sie Ihren jenkins-Job konfiguriert haben, aber wir benutzen buchstäblich ein Shell-Skript über jenkins, um die Datei zu erstellen (im Shell-Skript nennen wir einfach 'cat') und abhängig davon, wo Sie Ihre Site hosten Unser jenkins-Job führt eine Bereitstellung aus und führt das Shell-Skript aus, so dass es unsere Webseite mit dem "dynamischen" Link erstellt. – aug

0

Einfach meine eigene Lösung hier posten. Vielleicht nicht die eleganteste, aber eine Möglichkeit, dies zu tun, ist die Bereitstellung eines HTTP-Servers auf demselben Rechner, auf dem Jenkins läuft, und das Hinzufügen eines "Post-Build-Schritts" im relevanten Jenkins-Job, um die HTML-Berichtsdateien auf den HTTP-Server zu kopieren und die vorhandenen Dateien zu überschreiben da sind welche. Dann wird der Bericht auf jedem Port verfügbar sein, auf dem der HTTP-Server läuft.

Verwandte Themen