O plugin Artifactory Jenkins não está sendo baixado no multi-thread

8

Na minha empresa, estamos tendo problemas ao tentar fazer o download com o plug-in Artifactory no Jenkins porque temos muitos arquivos minúsculos em nosso repositório e, aparentemente, o plug-in funciona em um único thread, por isso leva muito tempo. Testamos a CLI do JFrog, onde podemos definir o número de threads para o download e isso realmente funciona muito bem. Ainda assim, precisamos realmente usar o plugin original.

Existe alguma solução alternativa para isso? Talvez tenha algo a ver com a configuração do servidor Artifactory?

Nota : Temos muitos arquivos pequenos, porque é assim que o desenvolvimento está sendo feito na empresa. Pensamos em arquivar todos os arquivos antes de armazená-los, mas isso provavelmente não seria econômico em termos de armazenamento, pois cada arquivo zip carregado provavelmente teria uma soma de verificação diferente.

Asaf Haim
fonte
Normalmente, empacotaria o aplicativo antes de fazer o upload para o artefato. Eu só estava me perguntando como o artefato foi usado no seu processo de desenvolvimento, qual é a plataforma ou o idioma usado e como esses arquivos são consumidos. Ter uma visão mais ampla do processo pode nos ajudar a encontrar soluções em potencial que podem não ser óbvias ao focar apenas no problema do download.
Newtopian

Respostas:

5

Você pode tentar executar o upload do arquivo artefato em paralelo se estiver usando a sintaxe Jenkinsfile: https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

Aqui está um exemplo mais simples para executar coisas em paralelo se você tiver apenas um número fixo de coisas que deseja fazer em paralelo:

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

Isso pode ser colocado dentro de a node; nesse caso, todos eles compartilhariam o mesmo espaço de trabalho ou cada comando poderá definir nodedentro do código da tarefa para executar em outro nó; nesse caso, haveria um espaço de trabalho diferente para cada tarefa.

Michael Pereira
fonte
Olá Michael! Eu estava falando mais sobre o download de arquivos e não o upload. Se eu fizesse isso com o download, ele não salvaria os arquivos em nós diferentes, em vez de um único espaço de trabalho?
Asaf Haim
Não necessariamente, vou lhe dar um exemplo melhor em alguns momentos #
Michael Pereira
Não tenho certeza que corresponde ao meu caso desde quando eu baixar artefatos, eu não sei o número exato de artefatos (usando formiga-como sintaxe para baixar todo o repositório)
Asaf Haim
Nesse caso, dê uma olhada em jenkins.io/doc/pipeline/examples/#jobs-in-parallel Você pode reutilizar o mesmo código e apenas alterar o contador de loop para o número de elementos que precisa baixar e substituir a build joblinha com o único a baixar a partir artifactory
Michael Pereira
Mas e se eu não souber o número de arquivos baixados? Eu uso a notação de asterisco duplo (**) para baixar recursivamente todo o meu repositório, então nem sei quantos existem nem seus nomes.
Asaf Haim