Изменение номера сборки Jenkins

150

Есть ли способ изменить номер сборки, отправляемый по электронной почте после завершения задания? Проблема в том, что сборки продукта НЕ выполняются Jenkins, поэтому мы хотим иметь возможность получить номер сборки (например, из текстового файла) и обновить номер сборки в Jenkins, чтобы он соответствовал ему. Я попытался установить номер сборки:

set BUILD_NUMBER=45

Но в электронном письме по-прежнему отображается номер сборки, изначально установленный Дженкинсом.

erman8
источник

Ответы:

277

Если у вас есть доступ к консоли сценариев (Управление Jenkins -> Консоль сценариев), вы можете сделать это следующим образом:

Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)
l8nite
источник
8
Я могу убедиться, что это отлично помогает решить проблему. Я вручную скопировал историю сборки между двумя серверами jenkins, и на новом сервере nextBuildNumber оказался неправильным. Выполнение этого позволило мне установить правильный новый nextBuildNumber, перезагрузка конфигурации jenkins не требовалась.
Фил Холленбэк,
5
Если вы используете плагин GitHub, "YourJobName"это "organization/repository/branchname".
Рууд
16
Работает. Значение можно проверить без построения, используя:Jenkins.instance.getItemByFullName("YourJobName").getNextBuildNumber()
Daniel Alder
7
Я могу подтвердить, что это также работает для MultiBranch-Pipelines. «JobName» указано в верхней части страницы ветки: Полное название проекта: PipelineName/BranchNameтак и будетJenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
Маркус
1
@Quantic meta.stackoverflow.com/questions/356435/…
Дэниел Алдер,
37

можно сделать с помощью плагина: https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin

более подробная информация: http://www.alexlea.me/2010/10/howto-set-hudson-next-build-number.html

если вам не нравится плагин:

Если вы хотите изменить номер сборки через файл nextBuildNumber, вам следует «Перезагрузить конфигурацию с диска» на странице «Управление Jenkins».

Mighq
источник
2
Не нужно использовать плагин.
david.perez 07
1
Спасибо, ты спас мне день.
Юкио Фукудзава
29

В папке рабочей области вакансии, например:

C:\Program Files (x86)\Jenkins\jobs\job_name

есть файл с именем nextBuildNumber.

Установка номера сборки в файле и перезагрузка конфигурации с диска (меню «Управление Jenkins») заставит следующую сборку, которую вы начнете, иметь значение из файла как BUILD_NUMBER.

Весенков
источник
9
Вы перезагружали конфигурацию с диска (меню «Управление Jenkins») после изменения файла nextBuildNumber?
vezenkov
Неа! Я думал, это произошло автоматически.
hfossli
Это отлично сработало для меня. Перед тем, как это повлияет, необходимо перезагрузить сервер.
Hawkeye64
Необходимость перезагрузки сервера является проблемой, если у вас много пользователей, работающих с конвейером. Лучше избегать такого решения
MorganGeek
9

Если у вас есть имя ветки, включая прямую косую черту (например, с использованием потока git ), вам нужно будет заменить прямую косую черту на ее символ Юникода % 2F в имени ветки.

Вот пример конвейера My-Pipeline-Name и ветки release / my-release-branch-name.

Jenkins.instance.getItemByFullName("My-Pipeline-Name/release%2Fmy-release-branch-name").updateNextBuildNumber(BUILD_NUMBER)

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

Jenkins.instance.getItem("My-Pipeline-Name").getAllJobs()

Надеюсь, это поможет.

DaWyz
источник
5

Возможно, вам может пригодиться комбинация этих плагинов:

Морфик
источник
Большое спасибо - мне удалось использовать один из плагинов.
erman8 01
1

Вы можете изменить номер сборки, обновив файл $ {JENKINS_HOME} / jobs / job_name / nextBuildNumber на сервере Jenkins.

Вы также можете установить плагин Next Build Number, чтобы изменить номер сборки с помощью интерфейса командной строки или пользовательского интерфейса.

Прадип сахавала
источник
Обратите внимание, что изменения номера сборки в файле nextBuildNumber самого по себе недостаточно, также необходимо выполнить «Перезагрузить конфигурацию с диска» в меню «Управление Jenkins».
Фальстаф
0

Для многоотраслевых конвейерных проектов сделайте это в консоли скрипта:

def project = Jenkins.instance.getItemByFullName("YourMultibranchPipelineProjectName")    
project.getAllJobs().each{ item ->   
    
    if(item.name == 'jobName'){ // master, develop, feature/......
      
      item.updateNextBuildNumber(#Number);
      item.saveNextBuildNumber();
      
      println('new build: ' + item.getNextBuildNumber())
    }
}
XavierHdz
источник
-4

Используя переменные среды:

$BUILD_NUMBER =4
кср
источник
2
Пожалуйста, не кричи. Спасибо.
OliBlogger