Подтвердить что ты не робот

Установить номер сборки для рабочих потоков Jenkins (конвейер)

Я переношу работу jenkins-workflow на новую работу рабочего процесса на основе шаблонов. Поскольку номер сборки используется как часть версии артефактов сборки, рабочий процесс создает, я должен начать строить номер нового рабочего процесса с числом, большим, чем старый рабочий процесс. К сожалению, плагин "Next Build Number" не работает с конвейером рабочих процессов.

Кто-нибудь знает хороший способ сделать это?

4b9b3361

Ответ 1

Попробуйте выполнить ниже script в консоли Jenkins script. Измените "workFlow" на свое имя_создания

def job = Jenkins.instance.getItem("workFlow")
job.nextBuildNumber = 10
job.saveNextBuildNumber()

Ответ 2

Или вы можете добавить такой сниппет в свой проект Pipeline/Workflow DSL script (aka Jenkinsfile):

offset = 5
currentBuild.displayName = "#" + (currentBuild.number + offset)

Ответ 3

К сожалению, перечисленные выше методы не работали при использовании папок. Я прибегал к следующему в консоли Jenkins script:

job = Jenkins.getInstance().getItemByFullName("BSKAzureConversion-Jobs/master", Job.class)
job.nextBuildNumber = 92
job.save()

Ответ 4

Несколько примечаний:

  • Jenkins Jobs и Folders не являются сериализуемыми. Необходимо использовать @NonCPS
  • Отключить Groovy Песочницу, так как глобальные переменные типа Jenkins.instance недоступны иначе
  • Jenkins.instance.getItem() не будет работать с папками. Используйте Jenkins.instance.getItemByFullName для env.JOB_NAME
  • Настройка job.nextBuildNumber вступает в силу с последующей сборкой, поэтому продолжайте и начинайте следующий.
  • Убедитесь, что вы возвращаетесь из своего конвейера, чтобы начальная сборка не продолжалась с плохим номером сборки

код:

@NonCPS
def updateBuildNumber(build_number) {
  def job = Jenkins.instance.getItemByFullName(env.JOB_NAME, Job.class)
  job.nextBuildNumber = build_number
  job.saveNextBuildNumber()
  build env.JOB_NAME
  return true
}

Ответ 5

Я также нашел другой способ сделать это, используя "jenkins-cli". Он работает для заблокированных установок, где доступ к консоли script недоступен (Cloudbees Enterprise Jenkins)

java -jar jenkins-cli.jar   -s https://instanceURL/ \
          set-next-build-number workflow-name  33