Необходимо передать git sha для проверки в многоотраслевой конвейер Jenkins.

Можно ли использовать параметры, позволяющие пользователям передавать git sha в конвейер с несколькими филиалами, в то время как по умолчанию используется глава филиала? Также мне нужно было бы только эту функцию для основной ветки.

Я использую...
Дженкинсфайл в коде
Дженкинс Декларативный трубопровод

2 ответа

Решение

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

  • Если текущая ветвь является главной, вы настраиваете параметр для этой сборки (так как это не очень интуитивно понятно, я написал статью в блоге некоторое время назад).params.INPUT_REVISIONнапример, будет хранить данную ревизию, и вы можете установить по умолчаниюHEADили отступление к нему, если параметр еще не указан (например, для первого запуска).

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

Я смог сделать это с помощью декларативных конвейеров со следующими...

pipeline {
  options {
    skipDefaultCheckout()
  }
...
steps {
    script {
      if (GIT_REVISION=='HEAD') {
        checkout scm
      } else {
        checkout([$class: 'GitSCM',
            branches: [[name: "${params.GIT_REVISION}"]],
            doGenerateSubmoduleConfigurations: false,
            extensions: [],
            submoduleCfg: [],
            userRemoteConfigs: [[credentialsId: 'XXXXXXX', url: 'git@github.com:xxxxx/xxxxx.git']]
        ])
      }
      ...
    }
  }
}  
Другие вопросы по тегам