Сканирование без каскада Jenkins

Я начинаю создавать свою среду мультибрендового конвейера, но я создал проблему.

Могу ли я запустить сканирование сборки только для обнаружения ветвей с помощью файла Jenkins, но без выполнения конвейера?

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

Спасибо за помощь!

Ответ 1

В разделе " Филиалы " вы можете добавить свойство "Подавить автоматический запуск SCM".

Это мешает Дженкинсу строить все с помощью Jenkinsfile.

Ответ 2

Кроме того, вы можете сделать это программно

import jenkins.branch.*
import jenkins.model.Jenkins


for (f in Jenkins.instance.getAllItems(jenkins.branch.MultiBranchProject.class)) {
  if (f.parent instanceof jenkins.branch.OrganizationFolder) {
    continue;
  }
  for (s in f.sources) {
    def prop = new jenkins.branch.NoTriggerBranchProperty();
    def propList = [prop] as jenkins.branch.BranchProperty[];
    def strategy = new jenkins.branch.DefaultBranchPropertyStrategy(propList);
    s.setStrategy(strategy);
  }

  f.computation.run()
}

Это фрагмент Groovy, который вы можете выполнить в Jenkins, он будет выполнять сканирование, но не будет запускать новые "сборки" для всех обнаруженных ветвей.

Ответ 3

Чтобы добавить к ответу @Stqs, вы также можете установить его noTriggerBranchProperty, используя плагин Job DSL, например:

multibranchPipelineJob('example') {
  ...
  branchSources {
    branchSource {
      ...
      strategy {
        defaultBranchPropertyStrategy {
          props {
            // Suppresses the normal SCM commit trigger coming from branch indexing
            noTriggerBranchProperty()
            ...
          }
        }
      }
    }
  }
  ...
}