Frage

Ich konfiguriere den Jenkins-Job zum Hochladen von Dateien von Subversion nach SFTP. Über SSH veröffentlichen läuft recht gut, aber es wird hochgeladenalle Dateien bei jedem Build.

Bei einigen Projekten haben wir Tausende von Dateien und das Hochladen kostet mehr als 1 Stunde. Dies ist also keine Option.

Kann jemand eine Möglichkeit vorschlagen, nur Dateien hochzuladen, die in der letzten Revision geändert wurden?

War es hilfreich?

Lösung

Sie können Subversion Plugin verwenden, um SVN-Änderungen abzufragen und auszuführen Ein Job, der nichts Besonderes tut. Nennen wir es YourPollingJob . Rufen Sie dann die Jenkins-API über http wie folgt auf:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

wobei BUILD_ID die tatsächliche Build-ID des gerade ausgeführten Jobs ist (das übliche Format ist so etwas wie 2012-02-21_16-15-49). Untersuchen Sie das Ergebnis. Beachten Sie, dass alle Informationen zu den Dateien, die sich seit dem vorherigen Build geändert haben, vorhanden sind. Sie müssen sie nur analysieren.

Jetzt können Sie Folgendes tun: YourPollingJob ruft einen anderen Job auf - nennen wir ihn CopyJob - und übergibt ihm seinen BUILD_ID als Parameter (über Parametrisiertes Trigger-Plugin ; rufen Sie unbedingt CopyJob als Post-Build-Schritt, nicht als Build-Schritt). CopyJob fragt dann Jenkins über http ab (wie oben beschrieben am besten über wget), analysiert die Ergebnisse und kopiert sie.

Sie können alles in einem Job erledigen, aber es ist etwas komplizierter und schwieriger zu debuggen.

Es ist wahrscheinlich auch ratsam, das gesamte Repository einmal am Tag (jede Nacht) zu kopieren.

Andere Tipps

Sie können diese Dateien in einem separaten Repository aufbewahren.Es klingt so, als wäre ein verteiltes VCS wie Mercurial oder Git in Ihrem Fall das Beste dafür.Sie können es entweder im Arbeitsbereich einrichten und einen Erstellungsschritt hinzufügen, um geänderte Dateien festzuschreiben, und das Festschreiben an den Server senden, auf dem Sie es veröffentlichen möchten (was funktionieren sollte, solange Sie den Arbeitsbereich nicht löschen oder auf mehreren aufbauenMaschinen) oder fügen Sie zusätzliche Schritte hinzu, um das Repo mit den Artefakten von dem Server zu klonen / abzurufen, auf dem Sie sie behalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top