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

У меня есть задания конвейера Дженкинса, где единственное различие между заданиями-параметр, одно значение "имя", я мог бы даже использовать имя задания с несколькими ветвями (хотя и не то, что он передает как JOB_NAME, которое является именем ветви, к сожалению, ни один из env не подходит без разбора). Было бы здорово, если бы я мог установить эту внешнюю сторону файла Jenkinsfile, так как тогда я мог бы использовать один и тот же файл jenkinsfile для всех различных заданий.

3 ответов


в основном вам нужно создать общая библиотека Дженкинса имя 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, который использует его (теперь имеет 2 строки)

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

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

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


добавьте это в свой файл Jenkinsfile:

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

затем, когда строить уже после запуска, вы увидите "стройте с кнопки paramtres" на UI работу.

там вы можете ввести значение paramtre, которое вы хотите.

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


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