Несколько конвейеров Jenkins для одного репозитория

#jenkins #jenkins-pipeline

#дженкинс #дженкинс-трубопровод

Вопрос:

На данный момент у меня есть два проекта с несколькими заданиями для одного репозитория:

  • Сначала выполняется на develop ветке
  • Второй выполняется для всех открытых запросов на извлечение

В каждом из них много вложенных заданий в стиле Freestyle.Они совершенно разные.

Я рассматриваю возможность перехода на конвейер как код с помощью Jenkinsfile. Итак мой вопрос в том, есть ли способ переключить путь / имя файла Jenkins на основе, скажем, названия ветки. Я пытался использовать многоотраслевой тип задания конвейера, но он позволяет задать только один путь к файлу Jenkins и использует его в любой ветке, включая PullRequests.

Может быть, есть лучший способ добиться этого? Я открыт для обсуждения. Спасибо

Ответ №1:

Вы можете сделать это в одном файле jenkins, используя выражение when, я предполагаю, что ваш конвейер не совсем большой

 pipeline {

agent any

stages {
  stage("Set variables from external input") {
    when {
      branch "develop"
    }
    steps{
      #add the thing which you want execute when branch is develop
    }
  }

stage("2 for Pull request") {
  when {
    expression {return !env.GIT_BRANCH.contains('master|develop')}
  }
  steps{
   #add the thing which you want execute when branch is pull request
   }
  }
 }
}
  

Комментарии:

1. Можно ли сделать название ветки динамическим для PR? Имеется в виду любая ветвь, которая не является develop или master ?