Jenkins Artifactory-Plugin wird nicht im Multithread heruntergeladen

8

In meiner Firma haben wir eine schlechte Zeit beim Versuch, mit dem Artifactory-Plugin in Jenkins herunterzuladen, weil wir viele kleine Dateien in unserem Repository haben und das Plugin anscheinend in einem einzigen Thread funktioniert, so dass es WIRKLICH lange dauert. Wir haben die JFrog-CLI getestet, in der wir die Anzahl der Threads für den Download festlegen können, und das funktioniert tatsächlich hervorragend. Trotzdem müssen wir wirklich das Original-Plugin verwenden.

Gibt es eine Problemumgehung dafür? Vielleicht hat es etwas mit der Artifactory-Serverkonfiguration zu tun?

Hinweis : Wir haben so viele kleine Dateien, weil die Entwicklung in der Firma, wie ich befürchte, so durchgeführt wird. Wir haben darüber nachgedacht, alle Dateien zu archivieren, bevor wir sie speichern, aber das wäre wahrscheinlich nicht wirtschaftlich in Bezug auf die Speicherung, da jede hochgeladene Zip-Datei wahrscheinlich eine andere Prüfsumme haben würde.

Asaf Haim
quelle
Normalerweise wird die Anwendung vor dem Hochladen auf artifactory verpackt. Ich habe mich nur gefragt, wie künstlich in Ihrem Entwicklungsprozess verwendet wurde, welche Plattform oder Sprache verwendet wird und wie diese Dateien verwendet werden. Ein umfassenderes Bild des Prozesses könnte uns helfen, mögliche Lösungen zu finden, die möglicherweise nicht offensichtlich sind, wenn wir uns nur auf das Download-Problem konzentrieren.
Newtopian

Antworten:

5

Sie können versuchen, den Upload der künstlichen Datei parallel auszuführen, wenn Sie die Jenkinsfile-Syntax verwenden: https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

Hier ist ein einfacheres Beispiel, um Dinge parallel auszuführen, wenn Sie nur eine feste Anzahl von Dingen haben, die Sie parallel ausführen möchten:

parallel (
    "task1" : {
        //runTask1
    },
    "task2" : {
        //runTask2
    },
    "task3" : {
        //runTask3
    },
)

Dies kann in a eingeschlossen nodewerden. In diesem Fall würden alle denselben Arbeitsbereich gemeinsam nutzen, oder jeder Befehl kann nodeinnerhalb des Aufgabencodes definieren , dass er auf einem anderen Knoten ausgeführt werden soll. In diesem Fall hätte er für jede Aufgabe einen anderen Arbeitsbereich.

Michael Pereira
quelle
Hallo Michael! Ich habe mehr über das Herunterladen von Dateien und nicht über das Hochladen gesprochen. Wenn ich dies beim Herunterladen tun würde, würde es dann nicht die Dateien auf verschiedenen Knoten anstatt auf einem einzelnen Arbeitsbereich speichern?
Asaf Haim
Nicht unbedingt, ich werde Ihnen in wenigen Augenblicken ein besseres Beispiel geben
Michael Pereira
Ich bin mir nicht sicher, ob dies zu meinem Fall passt, da ich beim Herunterladen von Artefakten nicht die genaue Anzahl der Artefakte kenne (mit antisähnlicher Syntax, um das gesamte Repository herunterzuladen)
Asaf Haim,
In diesem Fall werfen Sie einen Blick auf jenkins.io/doc/pipeline/examples/#jobs-in-parallel. Sie können denselben Code wiederverwenden und einfach den Schleifenzähler auf die Anzahl der Elemente ändern, die Sie herunterladen müssen, und die build jobZeile ersetzen mit dem von artifactory herunterzuladen
Michael Pereira
Aber was ist, wenn ich die Anzahl der heruntergeladenen Dateien nicht kenne? Ich verwende die doppelte Sternchen-Notation (**), um mein gesamtes Repository rekursiv herunterzuladen, sodass ich weder weiß, wie viele es gibt, noch deren Namen.
Asaf Haim