Как я могу параметризовать задания Jenkinsfile

У меня есть рабочие задания Jenkins Pipeline, где единственное различие между заданиями - это параметр, одно значение "имя", я мог бы даже использовать имя задания для многоканальной работы (хотя не то, что он передает как JOB_NAME, который является именем ФИЛИАЛА, к сожалению ни один из envs не подходит без разбора). Было бы здорово, если бы я мог установить этот внешний вид из файла Jenkins, так как тогда я мог бы повторно использовать один и тот же файл jenkins для всех различных заданий.

Ответ 1

В принципе вам нужно создать jenkins shared library имя примера myCoolLib и иметь полный декларативный конвейер в одном файле в vars, скажем, вы вызываете файл myFancyPipeline.groovy.

Хотелось написать мои примеры, но на самом деле я вижу документы довольно приятные, поэтому я буду копировать оттуда. Сначала myFancyPipeline.groovy

def call(int buildNumber) {
  if (buildNumber % 2 == 0) {
    pipeline {
      agent any
      stages {
        stage('Even Stage') {
          steps {
            echo "The build number is even"
          }
        }
      }
    }
  } else {
    pipeline {
      agent any
      stages {
        stage('Odd Stage') {
          steps {
            echo "The build number is odd"
          }
        }
      }
    }
  }
}

а затем aJenkinsfile, который использует его (теперь имеет две строки)

@Library('myCoolLib') _
evenOrOdd(currentBuild.getNumber())

Очевидно, что здесь параметр имеет тип int, но может быть любое количество параметров любого типа.

Я использую этот подход и имею один из сценариев groovy, который имеет 3 параметра (2 строки и int) и имеет 15-20 файлов Jenkinsfiles, которые используют эту script через общую библиотеку, и это идеально. Мотивация - это, конечно, одно из самых основных правил в любом программировании (не цитата, а что-то вроде): если у вас есть "тот же код" в 2 разных местах, что-то не так.

Ответ 2

Добавьте это в свой файл Jenkins:

properties([
  parameters([
    string(name: 'myParam', defaultValue: '')
  ])
])

Затем, как только сборка будет запущена один раз, вы увидите кнопку "build with paramtres" в пользовательском интерфейсе задания.

Здесь вы можете ввести нужное значение paramtre.

В конвейере script вы можете ссылаться на него с помощью params.myParam

Ответ 3

Имеется опция. Этот проект параметризуется в конфигурации заданий вашего конвейера. Запишите имя переменной и значение по умолчанию, если хотите. В конвейере доступ к этой переменной с помощью env.variable_name