Как reset построить номер в jenkins?

Я использую Jenkins и Gradle для создания моего проекта java.

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

Ниже приведена информация о моей 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

Я хочу reset номер сборки Jenkins, например:

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

Как я могу reset номер сборки в Jenkins?

Спасибо заранее.

Ответ 1

Может быть проще сделать из консоли groovy script. Перейдите в http://your-jenkins-server/script. В окне script введите:

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

Ответ 2

От здесь

Учитывая, что ваше задание Хадсона называется FooBar,

  • переименовать FooBar в FooBar-Copy
  • создайте новое задание с именем FooBar, используя опцию "Копировать существующее задание", из FooBar-Copy
  • удалить FooBar-Copy

Ответ 3

  • Первое рабочее пространство wipeout и избавиться от предыдущих сборок.
    • На сервере перейдите к работа, например. 'var/lib/jenkins/jobs/myJob' удалить рабочего пространства и сборки dirs, а также любых файлов опроса, lastSuccessful, файлы lastStable и т.д. У вас должен быть только файл config.xml и lastBuildNumber.
    • Завершите работу, используя что-то вроде остановки службы jenkins
    • Отредактируйте файл с именем nextBuildNumber, вставив 1 вместо текущего номера сборки
    • Запустите jenkins снова, сервис jenkins start
    • Войдите в jenkins и перейдите к своей работе и нажмите "Сборка". Должен начинать работу # 1

Ответ 4

Если вы хотите установить следующий номер сборки, для этого есть плагин "NextBuildNumber". Но это не сработает в вашем случае, потому что необходимый вам номер сборки, равный 1, меньше вашего текущего номера сборки.

Здесь нужно сначала стереть все предыдущие сборки. Вы можете сделать это, запустив этот простой скрипт Перейти к → Управление Jenkins → Консоль сценариев

// 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. :) Это так просто.

Обновление - теперь у Jenkins есть плагин Purge Job History, чтобы сделать это проще всего. Проверьте страницу для получения дополнительной информации - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin

Ответ 5

В более общем плане reset ваш номер сборки до N (где N не обязательно 1):

  • Удалите любые существующие сборки, где buildNumber >= N.
  • Изменить Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Задайте номер, который он содержит, N.
  • От Jenkins выберите Manage Jenkins -> Reload Configuration from Disk.

Ответ 6

Расширение принятого ответа, здесь, как сделать это для всех проектов одновременно:

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

Ответ 7

Как продолжение превосходного ответа @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) и раскомментируйте различные команды печати.


Документация: сведений об этих объектах было сложно найти, но я определил следующее:

Ответ 8

Вы можете использовать плагин nexBuildNumber или просто изменить файл nexBuildNumber на номер сборки reset. Ниже приведены шаги, которые необходимо выполнить:

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

Примечание. После очистки старых сборок вы теряете историю сборки, и они больше не доступны на приборной панели Jenkins.

  • Перезагрузить конфигурацию (Дженкинс → Управление Дженкинсом).
  • Установите следующую версию сборки в 1, либо используя подключаемый модуль Next Build Number, либо изменив файл nextBuildNumber в вашем каталоге.

Ответ 9

Я нашел простой способ сделать это.

  1. Протрите рабочее место.
  2. Перейдите к каждой сборке, которая была сохранена на Jenkins, и удалите ее.
  3. Установите номер сборки на 1, затем выполните сборку.

Jenkins использует предыдущую сборку, чтобы определить номер следующей сборки, если введенный вами номер сборки меньше, чем предыдущий номер сборки, Jenkins автоматически увеличит ваш номер сборки до значения, превышающего предыдущую сборку. Так что здесь мы просто

Ответ 10

Чтобы сбросить номера сборки всех заданий:

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