Bagaimana cara mengatur ulang nomor build di jenkins?


90

Saya menggunakan Jenkins dan Gradle untuk membangun proyek java saya.

Setiap kali saya membangun proyek saya, saya mendapatkan nomor pembuatan baru di layar Jenkins.

Berikut ini adalah info build Jenkins saya:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

Saya ingin mengatur ulang nomor build Jenkins seperti:

Success > Console Output  #1    03-Jan-2014 12:02:45

Bagaimana cara menyetel ulang nomor build di Jenkins?

Jawaban:


161

Dapat lebih mudah dilakukan dari konsol skrip groovy. Buka http: // your-jenkins-server / script Di jendela skrip masukkan:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
atau melalui clijava -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev

3
Ini pasti jawaban terbaik. Anda bahkan tidak perlu loop hapus jika Anda hanya ingin mengatur nomornya.
Nick

Untuk beberapa alasan, ini hanya melakukan penghapusan pada versi terbaru, namun hal berikut berhasil untuk saya: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

Pertanyaan noob .. bagaimana saya tahu nama pekerjaan yang tepat.
Ammar Mujeeb

@AmmarMujeeb buka dasbor Jenkins Anda dan Anda akan melihat nama pekerjaan di sana. Anda juga dapat pergi ke /var/lib/jenkins/jobs/Linux dan nama direktori di sana adalah nama pekerjaan yang tepat
rickrizzo

62

Dari sini

Mengingat pekerjaan Hudson Anda bernama FooBar,

  • ganti nama FooBar menjadi FooBar-Copy
  • buat pekerjaan baru bernama FooBar, menggunakan opsi 'Salin pekerjaan yang ada', dari FooBar-Copy
  • hapus FooBar-Copy

35
  • Pertama-tama hapus ruang kerja dan hapus versi sebelumnya.
    • Di server, navigasikan ke direktori pekerjaan misalnya. 'var / lib / jenkins / jobs / myJob' hapus workspace & build dirs serta semua file polling, lastSuccessful, file lastStable dll. Anda seharusnya hanya memiliki config.xml dan lastBuildNumber.
    • Matikan jenkins menggunakan sesuatu seperti service jenkins stop
    • Edit file bernama nextBuildNumber , masukkan 1 sebagai ganti nomor build saat ini
    • Mulai jenkins lagi, layanan jenkins dimulai
    • Masuk ke jenkins dan pergi ke pekerjaan Anda dan tekan build. Harus mulai membangun pekerjaan # 1

1
Ini sangat membantu. Terima kasih.

23

Jika Anda ingin mengatur nomor build berikutnya, ada plugin "NextBuildNumber" untuk itu. Tetapi ini tidak akan berfungsi dalam kasus Anda karena nomor build yang Anda butuhkan, yaitu 1, lebih rendah dari nomor build Anda saat ini.

Di sini perlu menghapus semua bangunan sebelumnya terlebih dahulu. Anda dapat melakukan ini dengan menjalankan skrip sederhana ini. Buka -> Kelola Jenkins -> Konsol skrip

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }

Sekarang Anda dapat mengatur nomor build berikutnya menjadi 1 dan menjalankan build. Ini akan dimulai dengan 1 . :) Sesederhana itu.

Perbarui - Jenkins sekarang memiliki plugin Purge Job History untuk menyelesaikan ini dengan cara termudah. Lihat halaman untuk lebih jelasnya - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

Untuk mengatur ulang nomor build Anda secara lebih umum ke N(di mana Nbelum tentu 1):

  • Hapus semua build yang ada di mana buildNumber >= N.
  • Edit Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Tetapkan nomor di dalamnya N.
  • Dari Jenkins, pilih Manage Jenkins -> Reload Configuration from Disk.

Pastikan Anda membaca cacat ini sebelum Memilih "Muat ulang konfigurasi dari disk" - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

Memperluas jawaban yang diterima, berikut ini cara melakukannya untuk semua proyek sekaligus:

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

Sebagai perpanjangan dari jawaban luar biasa @ antweiss, kami sebenarnya dapat melangkah lebih jauh ...

Tidak perlu menghapus Riwayat Build lengkap, jika tidak mau, Anda cukup memutar kembali waktu, ke poin sebelumnya:

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

Jika Anda ingin dummy lari, untuk memeriksa apa yang akan dilakukan, tanpa benar-benar melakukannya, hanya komentar pada build.delete()dan item.updateNextBuildNumber(resetNumberTarget)garis dan tanda komentar berbagai perintah cetak.


Dokumentasi: Detail objek ini sulit ditemukan, tetapi saya mengidentifikasi yang berikut ini:


1

Anda dapat menggunakan nexBuildNumberplug-in atau cukup mengubah nexBuildNumberfile untuk menyetel ulang nomor build. Berikut langkah-langkah yang perlu Anda lakukan:

  • Pergi ke .jenkins/Jobs/<YourJobName>/build/, ambil cadangan folder ini (jika Anda perlu untuk penggunaan di masa mendatang) dan hapus folder build .

Catatan: Setelah Anda membersihkan build lama, Anda kehilangan riwayat build dan tidak lagi tersedia di dasbor Jenkins.

  • Muat ulang konfigurasi (Jenkins -> Kelola Jenkins).
  • Setel versi build berikutnya ke 1 dengan menggunakan plug-in Next Build Number atau memodifikasi nextBuildNumberfile di direktori pekerjaan Anda.

0

Saya menemukan cara mudah untuk melakukan ini.

  1. Hapus ruang kerja Anda.
  2. Buka setiap build yang disimpan di Jenkins dan hapus.
  3. Setel nomor build ke 1 lalu build.

Jenkins menggunakan build sebelumnya untuk menentukan nomor build berikutnya, jika nomor build yang Anda masukkan lebih rendah dari nomor build sebelumnya, Jenkins secara otomatis akan meningkatkan nomor build Anda menjadi lebih tinggi dari build sebelumnya. Jadi di sini kita baru saja



-1

Untuk mengatur ulang nomor build dari semua pekerjaan:

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.