Множественный исполнитель и плагин блокирования сборки на конвейере Jenkins - PullRequest
0 голосов
/ 09 октября 2019

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

Я добавил 2 раба, и у каждого раба есть 2 исполнителя.

В моей конфигурации каждое подчиненное устройство сопоставляется с определенным ресурсом, который могут использовать задания (скажем, он использует кластер k8s), и я добавил два блокируемых ресурса с точки зрения количества с одинаковой меткой. (таким образом, кластер 2 k8s) enter image description here

В случае, если я пытаюсь избежать многократного выполнения других заданий на одном и том же узле с плагином Build Blocker, он не работает.
Iхотелось бы избежать того, чтобы некоторые задания занимали место в очереди (одно из доступных исполнителей на узел), чтобы исполнитель мог использоваться другими заданиями, которые не используют общие ресурсы.
Я думал использовать ресурсы блокировки дляблокировать задания, когда один из ресурсов заблокирован, но этот подход также не исключает того, что задание занимает место в очереди для исполнителей на узел (в данном случае 2).

Любые другие возможные способырешить эту проблему?

Пример:

time1
[РАБОТА 1 - 2 исполнителя]: Job1 RUNNING (получает контроль над ресурсом)

 options {
        lock(label: 'docker', quantity:1)
    }

[РАБ 2 - 2 исполнителя]: Ничто не выполняется

время2
Задание 2 выполнено
[РАБ 1 - 2 исполнителя]: Job1 RUNNING (получает контроль над ресурсом)
[SLAVE 1 - 2 исполнителя]: Job2 RUNNING (ожидает освобождения определенного ресурса, все ресурсы теперь заблокированы)

 options {
        lock(label: 'docker', quantity:1)
    }

time3
Job3 выполняется [SLAVE 2 - 2 исполнителя]: Job3 RUNNING (запускается без блокировки каких-либо ресурсов)

Этот сценарий показывает, что во время работы Job3 job2 ожидает ресурс, доступный на slave2.

Есть ли способ решитьэта проблема?
Я думал сопоставить каждый ресурс блокировки с реальным ресурсом, который должно использовать задание.
Есть ли способ получить информацию из заблокированного ресурса?

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

...