Як скинути номер збірки в Jenkins?


89

Я використовую Jenkins та Gradle для побудови свого Java-проекту.

Кожного разу, коли я будую свій проект, я отримую новий номер збірки на екрані Дженкінса.

Нижче наведена інформація про мою збірку Jenkins:

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

Я хочу скинути номер збірки Дженкінса, наприклад:

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

Як я можу скинути номер збірки в Jenkins?

Відповіді:


161

Це можна зробити простіше за допомогою консолі groovy script. Перейдіть на http: // your-jenkins-server / script У вікні сценарію введіть:

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

6
або через кліjava -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
хрустальов

3
Це, безумовно, найкраща відповідь. Вам навіть не потрібен цикл видалення, якщо ви хочете лише встановити номер.
Нік

З якихось причин це виконує лише видалення останньої збірки, однак у мене працювало таке: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

Noob питання .. як я знаю точну назву роботи.
Аммар Муджеб

@AmmarMujeeb перейдіть до інформаційної панелі Дженкінса, і ви побачите там назву роботи. Ви також можете перейти /var/lib/jenkins/jobs/на Linux, і в назві каталогу там є точна назва роботи
rickrizzo,

62

від сюди

Враховуючи, що Вашу роботу в Гудзоні називають FooBar,

  • перейменуйте FooBar на FooBar-Copy
  • створити нове завдання на ім'я FooBar, скориставшись опцією 'Копіювати існуюче завдання', з FooBar-Copy
  • видалити FooBar-Copy

35
  • Спочатку стерти робочу область і позбутися попередніх збірок.
    • На сервері перейдіть до каталогу завдань, наприклад. 'var / lib / jenkins / jobs / myJob' видаляє робочу область і створює директорії, а також будь-які файли опитування, файли lastSuccessful, lastStable тощо. Ви повинні мати лише config.xml і lastBuildNumber.
    • Вимкніть jenkins, використовуючи щось на зразок службових jenkins stop
    • Відредагуйте файл із назвою nextBuildNumber , вставляючи 1 замість поточного номера збірки
    • Запустіть дженкіни знову, службові джинкіни
    • Увійдіть в Jennkins і йдіть на свою роботу і натисніть build. Почати будівництво завдання №1

1
Це було дуже корисно. Дякую.

23

Якщо ви хочете встановити наступний номер збірки, для цього існує плагін "NextBuildNumber". Але це не спрацює у вашому випадку, оскільки потрібний номер збірки, який дорівнює 1, менший за ваш поточний номер збірки.

Тут потрібно спочатку знищити всі попередні збірки. Ви можете зробити це, запустивши цей простий скрипт Перейдіть до -> Керування Дженкінсом -> Консоль сценарію

// 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() }

Тепер ви можете встановити номер наступної збірки на 1 і запустити збірку. Почнеться з 1 . :) Це так просто.

Оновлення - Дженкінс тепер має плагін Purge Job History, щоб зробити це найпростішим способом. Ознайомтеся зі сторінкою для отримання додаткової інформації - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

Щоб загальніше скинути номер збірки до N(де Nне обов’язково 1):

  • Видаліть усі існуючі збірки де buildNumber >= N.
  • Редагувати Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Встановіть число, яке воно містить N.
  • З Дженкінса виберіть Manage Jenkins -> Reload Configuration from Disk.

Не забудьте прочитати цей дефект, перш ніж вибрати «Перезавантажити конфігурацію з диска» - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

Розширюючи прийняту відповідь, ось як це зробити для всіх проектів одночасно:

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

4

Як продовження чудової відповіді @ antweiss, ми можемо піти далі ...

Не потрібно видаляти повну історію збірки, якщо ви цього не хочете, ви можете просто повернути час назад до попередньої точки:

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)

Якщо ви хочете фіктивний бігти, щоб перевірити , що він збирається робити, не на самому ділі робити це, просто закоментуйте build.delete()і item.updateNextBuildNumber(resetNumberTarget)рядки і розкоментувати різні команди друку.


Документація: Деталі цих об’єктів було важко знайти, але я визначив наступне:


1

Ви можете використовувати або nexBuildNumberплагін, або просто змінити nexBuildNumberфайл, щоб скинути номер збірки. Нижче наведені кроки, які потрібно виконати:

  • Перейдіть до .jenkins/Jobs/<YourJobName>/build/, зробіть резервну копію цієї папки (якщо вам потрібно для подальшого використання) і видаліть папку побудови .

Примітка. Після очищення старих збірок ви втрачаєте історії збірок, і вони більше не доступні на інформаційній панелі Дженкінса.

  • Перезавантажте конфігурацію (Jenkins -> Manage Jenkins).
  • Встановіть для наступної версії збірки значення 1, використовуючи плагін Next Build Number або модифікуючи nextBuildNumberфайл у каталозі yourjob.

0

Я знайшов простий спосіб зробити це.

  1. Витріть робочий простір.
  2. Перейдіть до кожної збірки, яка зберегла на Дженкінса, і видаліть її.
  3. Встановіть номер збірки на 1, а потім складіть.

Дженкінс використовує попередню збірку для визначення номера наступної збірки; якщо введений номер збірки менший за попередній, Дженкінс автоматично збільшить номер збірки до вищої, ніж попередня. Отже, ми просто



-1

Щоб скинути номери збірки всіх завдань:

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)
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.