Plugin Jenkins Artifactory tidak mengunduh dalam multi-utas

8

Di perusahaan saya, kami mengalami kesulitan mencoba mengunduh dengan plugin Artifactory di Jenkins karena kami memiliki banyak file kecil di repositori kami dan tampaknya plugin tersebut bekerja dalam satu utas, sehingga dibutuhkan waktu yang SANGAT lama. Kami menguji JFrog CLI di mana kami dapat mengatur jumlah utas untuk unduhan dan itu benar-benar berfungsi dengan baik. Tetap saja, kita benar-benar perlu menggunakan plugin asli.

Apakah ada solusi untuk ini? Mungkin ada hubungannya dengan konfigurasi server Artifactory?

Catatan : Kami memiliki begitu banyak file kecil karena itulah yang sedang dilakukan pengembangan di perusahaan saya khawatir. Kami berpikir untuk mengarsipkan semua file sebelum menyimpannya, tetapi itu mungkin tidak ekonomis dalam hal penyimpanan, karena setiap file zip yang diunggah mungkin memiliki checksum yang berbeda.

Asaf Haim
sumber
Biasanya orang akan mengemas aplikasi sebelum mengunggah ke artifactory. Saya hanya ingin tahu bagaimana artifactory digunakan dalam proses pengembangan Anda, apa platform atau bahasa yang digunakan dan bagaimana file-file ini dikonsumsi. Memiliki gambaran yang lebih luas tentang proses ini dapat membantu kami menemukan solusi potensial yang mungkin tidak jelas ketika berfokus pada masalah pengunduhan saja.
Newtopian

Jawaban:

5

Anda dapat mencoba menjalankan unggahan file artifactory secara paralel jika Anda menggunakan sintaks Jenkinsfile: https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

Berikut adalah contoh sederhana untuk menjalankan berbagai hal secara paralel jika Anda hanya memiliki sejumlah hal yang ingin Anda lakukan secara paralel:

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

Ini dapat diapit di dalam a node, di mana mereka semua akan berbagi ruang kerja yang sama atau setiap perintah dapat menentukan nodedi dalam kode tugas untuk dijalankan ke simpul lain di mana dalam kasus itu akan memiliki ruang kerja yang berbeda untuk setiap tugas.

Michael Pereira
sumber
Hai Michael! Saya berbicara lebih banyak tentang mengunduh file dan tidak mengunggah. Jika saya melakukan ini dengan mengunduh, bukankah akan menyimpan file pada node yang berbeda daripada ruang kerja tunggal?
Asaf Haim
Belum tentu, saya akan memberi Anda contoh yang lebih baik dalam beberapa saat
Michael Pereira
Tidak yakin cocok dengan kasus saya karena ketika saya mengunduh artefak, saya tidak tahu jumlah pasti artefak (menggunakan sintaks seperti semut untuk mengunduh seluruh repositori)
Asaf Haim
Dalam hal ini, lihat jenkins.io/doc/pipeline/examples/#jobs-in-parallel Anda dapat menggunakan kembali kode yang sama dan hanya mengubah penghitung loop ke jumlah elemen yang harus Anda unduh, dan ganti build jobbaris dengan yang akan diunduh dari artifactory
Michael Pereira
Tetapi bagaimana jika saya tidak tahu jumlah file yang saya unduh? Saya menggunakan notasi tanda bintang ganda (**) untuk mengunduh semua repositori saya secara rekursif, jadi saya juga tidak tahu berapa banyak atau ada nama mereka.
Asaf Haim