Plug-in Jenkins Artifactory non scaricato in multi-thread


8

Nella mia azienda non ci stiamo divertendo a provare a scaricare con il plug-in Artifactory in Jenkins perché abbiamo molti piccoli file nel nostro repository e apparentemente il plug-in funziona in un singolo thread, quindi richiede davvero molto tempo. Abbiamo testato l'interfaccia della riga di comando di JFrog in cui è possibile impostare il numero di thread per il download e funziona davvero alla grande. Tuttavia, abbiamo davvero bisogno di usare il plugin originale.

C'è qualche soluzione alternativa per questo? Forse ha qualcosa a che fare con la configurazione del server Artifactory?

Nota : abbiamo così tanti piccoli file perché è così che lo sviluppo viene fatto in azienda, temo. Abbiamo pensato di archiviare tutti i file prima di archiviarli, ma sarebbe probabilmente non economico in termini di archiviazione, poiché ogni file zip caricato avrebbe probabilmente un checksum diverso.


In genere si impacchetterebbe l'applicazione prima del caricamento in artefattivo. Mi stavo solo chiedendo come è stato utilizzato artificialmente nel tuo processo di sviluppo, qual è la piattaforma o il linguaggio utilizzato e come vengono consumati questi file. Avere una visione più ampia del processo potrebbe aiutarci a trovare potenziali soluzioni che potrebbero non essere ovvie quando ci si concentra solo sul problema del download.
Newtopian,

Risposte:


5

Potresti provare a eseguire il caricamento del file artificiale in parallelo se stai usando la sintassi Jenkinsfile: https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

Ecco un esempio più semplice per eseguire le cose in parallelo se hai solo un numero fisso di cose che vuoi fare in parallelo:

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

Questo può essere racchiuso all'interno di un node, nel qual caso condivideranno tutti lo stesso spazio di lavoro o ogni comando può definire nodeall'interno del codice dell'attività da eseguire in un altro nodo, nel qual caso avrebbe uno spazio di lavoro diverso per ogni attività.


Ciao Michael! Stavo parlando di più sul download di file e non sul caricamento. Se lo facessi con il download, non salverebbe i file su nodi diversi anziché su un singolo spazio di lavoro?
Asaf Haim,

Non necessariamente, ti darò un esempio migliore tra qualche istante
Michael Pereira,

Non sono sicuro che corrisponda al mio caso da quando scarico artefatti, non conosco il numero esatto di artefatti (usando una sintassi simile a una formica per scaricare l'intero repository)
Asaf Haim,

In tal caso, dai un'occhiata a jenkins.io/doc/pipeline/examples/#jobs-in-parallel Puoi riutilizzare lo stesso codice e cambiare il contatore del ciclo con il numero di elementi che devi scaricare e sostituire la build jobriga con quello da scaricare dall'artificio
Michael Pereira,

Ma cosa succede se non conosco il numero di file scaricati? Uso la notazione con doppio asterisco (**) per scaricare in modo ricorsivo tutto il mio repository, quindi non so quanti ce ne siano né i loro nomi.
Asaf Haim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.