Le plugin Jenkins Artifactory ne se télécharge pas en multi-thread

8

Dans ma société, nous avons du mal à essayer de télécharger avec le plugin Artifactory dans Jenkins parce que nous avons beaucoup de petits fichiers dans notre référentiel et apparemment le plugin fonctionne sur un seul thread, donc cela prend VRAIMENT beaucoup de temps. Nous avons testé la JFrog CLI où nous pouvons définir le nombre de threads pour le téléchargement et cela fonctionne très bien. Pourtant, nous devons vraiment utiliser le plugin d'origine.

Y a-t-il une solution à cela? Peut-être que cela a quelque chose à voir avec la configuration du serveur Artifactory?

Remarque : Nous avons tellement de petits fichiers parce que c'est ainsi que le développement se fait dans l'entreprise, je le crains. Nous avons pensé à archiver tous les fichiers avant de les stocker, mais cela ne serait probablement pas économique en termes de stockage, car chaque fichier zip téléchargé aurait probablement une somme de contrôle différente.

Asaf Haim
la source
En règle générale, on emballerait l'application avant de la télécharger sur artificiel. Je me demandais simplement comment artificiel a été utilisé dans votre processus de développement, quelle est la plate-forme ou le langage utilisé et comment ces fichiers sont-ils consommés. Avoir une image plus large du processus pourrait nous aider à trouver des solutions potentielles qui pourraient ne pas être évidentes en se concentrant uniquement sur le problème de téléchargement.
Newtopian

Réponses:

5

Vous pouvez essayer d'exécuter le téléchargement de fichier artificiel en parallèle si vous utilisez la syntaxe Jenkinsfile: https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

Voici un exemple plus simple pour exécuter des choses en parallèle si vous n'avez qu'un nombre fixe de choses que vous voulez faire en parallèle:

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

Cela peut être enfermé dans un node, auquel cas ils partageraient tous le même espace de travail ou chaque commande peut définir nodeà l'intérieur du code de tâche pour s'exécuter dans un autre nœud, auquel cas il aurait un espace de travail différent pour chaque tâche.

Michael Pereira
la source
Salut michael! Je parlais plus de téléchargement de fichiers et non de téléchargement. Si je faisais cela avec le téléchargement, cela n'enregistrerait-il pas les fichiers sur différents nœuds plutôt que sur un seul espace de travail?
Asaf Haim
Pas nécessairement, je vais vous donner un meilleur exemple dans quelques instants
Michael Pereira
Je ne suis pas sûr que cela corresponde à mon cas puisque lorsque je télécharge des artefacts, je ne connais pas le nombre exact d'artefacts (en utilisant la syntaxe de type fourmi pour télécharger le référentiel entier)
Asaf Haim
Dans ce cas, jetez un œil à jenkins.io/doc/pipeline/examples/#jobs-in-parallel Vous pouvez réutiliser le même code et simplement changer le compteur de boucle en nombre d'éléments que vous devez télécharger et remplacer la build jobligne avec celui à télécharger depuis artificiel
Michael Pereira
Mais que faire si je ne connais pas le nombre de fichiers que je télécharge? J'utilise la double notation astérisque (**) pour télécharger récursivement tout mon référentiel, donc je ne sais pas combien il y en a ni leurs noms.
Asaf Haim