Kami menjalankan Jenkins 2.x dan menyukai plugin Pipeline baru. Namun, dengan begitu banyak cabang di repositori, ruang disk terisi dengan cepat.
Apakah ada plugin yang kompatibel dengan Pipeline yang dapat saya hapus dari ruang kerja pada build yang berhasil?
checkout scm
.Seperti yang ditunjukkan @gotgenes dengan Versi Jenkins. 2.74 , di bawah ini berfungsi, tidak yakin sejak kapan, mungkin jika ada yang bisa mengedit dan menambahkan versi di atas
Dengan Jenkins Versi 2.16 dan Plugin Pembersihan Ruang Kerja , yang saya miliki, saya gunakan
untuk menghapus ruang kerja.
Anda dapat melihatnya dengan pergi ke
Kemudian pilih "step: General Build Step" dari Sample step dan kemudian pilih "Delete workspace when build is done" dari langkah Build
sumber
cleanWs
.Solusi yang disebutkan
deleteDir()
dancleanWs()
(jika menggunakan plugin pembersihan ruang kerja ) keduanya berfungsi, tetapi rekomendasi untuk menggunakannya dalam langkah pembuatan tambahan biasanya bukan solusi yang diinginkan . Jika build gagal dan pipeline dibatalkan, tahap pembersihan ini tidak akan pernah tercapai dan karena itu ruang kerja tidak dibersihkan pada build yang gagal.=> Dalam kebanyakan kasus Anda mungkin harus meletakkannya dalam kondisi pasca-langkah seperti
always
:sumber
cleanWs()
sebagai langkah menghapusnya sebelum perintah arsip post build dijalankan.cleanWs()
kemungkinan besar harus selalu dijalankan sebagai perintah pembuatan pospost
bagian,cleanWs()
dapat dengan aman dimasukkan ke dalamalways
kondisi, tetapi tempat teraman adalah di dalamcleanup
kondisi:post { cleanup { cleanWs() } }
Bahkan fungsi deleteDir secara rekursif menghapus direktori saat ini dan isinya. Tautan dan persimpangan simbolis tidak akan diikuti tetapi akan dihapus.
Untuk menghapus direktori tertentu dari ruang kerja, bungkus langkah deleteDir dalam langkah dir.
sumber
Saya menggunakan deleteDir () sebagai berikut:
Namun, saya kemudian harus juga menjalankan Sukses atau Gagal SETELAH selalu tetapi Anda tidak dapat memesan kondisi posting. Urutan saat ini selalu, diubah, dibatalkan, gagal, sukses, dan kemudian tidak stabil.
Namun, ada kondisi posting yang sangat berguna, pembersihan yang selalu berjalan terakhir, lihat https://jenkins.io/doc/book/pipeline/syntax/
Jadi pada akhirnya postingan saya adalah sebagai berikut:
Semoga ini dapat membantu untuk beberapa kasus sudut
sumber
Menggunakan skrip pipeline berikut:
Ikuti langkah ini:
sumber
options { skipDefaultCheckout() }
agar eksekusi lebih cepat.Jika Anda telah menggunakan ruang kerja khusus di Jenkins maka deleteDir () tidak akan menghapus folder @tmp.
Jadi untuk menghapus @tmp beserta workspace gunakan berikut ini
Potongan ini juga akan berfungsi untuk ruang kerja default.
sumber
Kami memastikan kami bekerja dengan ruang kerja yang bersih dengan menggunakan fitur plugin git. Anda dapat menambahkan perilaku tambahan seperti 'Bersihkan sebelum pembayaran'. Kami menggunakan ini juga untuk 'Pangkas cabang pelacak jarak jauh yang basi'.
sumber
Menggunakan ekstensi 'WipeWorkspace' tampaknya berfungsi juga. Ini membutuhkan bentuk yang lebih panjang:
Detail lebih lanjut di sini: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-
Ekstensi GitSCM tersedia di sini: https://github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl
sumber
Untuk Jenkins 2.190.1 ini pasti berfungsi:
sumber
Pembersihan : Karena bagian posting Pipeline dijamin berjalan di akhir eksekusi Pipeline, kita dapat menambahkan beberapa notifikasi atau langkah lain untuk melakukan finalisasi, notifikasi, atau tugas akhir Pipeline lainnya.
sumber
Dalam kasus saya, saya ingin menghapus file lama di awal pembuatan, tetapi ini bermasalah karena kode sumber telah diperiksa.
Solusi saya adalah meminta git untuk membersihkan file apa pun (dari build terakhir) yang tidak diketahui:
Dengan cara itu saya bisa mulai membangun dengan bersih, dan jika gagal, ruang kerja tidak dibersihkan dan karenanya mudah di-debug.
sumber
Saat ini, deleteir () dan cleanWs () tidak berfungsi dengan baik saat menggunakan plugin Jenkins kubernetes, ruang kerja pod dihapus tetapi ruang kerja master tetap ada
seharusnya tidak menjadi masalah untuk cabang yang persisten, ketika Anda memiliki langkah untuk membersihkan ruang kerja sebelum checkout scam. Ini pada dasarnya akan menggunakan kembali ruang kerja yang sama berulang kali: tetapi ketika menggunakan pipa multibranch, master menyimpan seluruh ruang kerja dan direktori git
Saya percaya ini seharusnya menjadi masalah dengan Jenkins, pencerahan apa pun di sini?
sumber