Как я могу ограничить количество определенных конвейеров, работающих параллельно? - PullRequest
0 голосов
/ 29 мая 2018

Я хочу разрешить параллельный запуск следующего конвейера, но я должен ограничить максимальное количество параллельных прогонов из-за ограниченных ресурсов.

pipeline {

  agent { label "$JENKINS_AGENT" }
  parameters { .. }
  options { .. }

  stages {
    stage('Checkout') { .. }
    stage('Config') { .. }
    stage('Deploy') { .. }
    stage('Test') { .. }
  }

  post {
    failure { .. }
    success { .. }
    always {
      cleanup()
    }
  }
}

Например, если я ограничен 3 развертываниями, как я могудобиться этого?

Редактировать : В настоящее время я добавил следующее в свой файл jenkinsfile.Кажется, работает, но я не уверен, что это правильный способ сделать это. (используя Плагин Throttle Concurrent Builds )

properties([
  [
    $class: 'ThrottleJobProperty',
    categories: ['parallel_pipeline'],
    limitOneJobWithMatchingParams: false,
    maxConcurrentPerNode: 3,
    maxConcurrentTotal: 3,
    paramsToUseForLimit: '',
    throttleEnabled: true,
    throttleOption: 'project'
  ],
])

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Строго говоря, в данный момент это невозможно.В Jenkins JIRA есть открытый билет с запросом на эту функцию.

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

Другой способ, которым я смог справиться с этим в конкретном использованииВ случаях, когда каждая ветвь шага parallel заключена в блок stage.Так как этап блокирует одного исполнителя за раз, это означает, что вы будете запускать столько веток, сколько у вас есть доступных слотов исполнителя, а затем другие ветви будут ждать, пока слот исполнителя не освободится, чтобы возобновить выполнение.Однако это не всегда работает - например, у вас могут быть причины не делать каждую ветвь независимой стадией.

0 голосов
/ 03 июня 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...