Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Jenkins publish over ssh


(Andrey Kim) #1

Всем привет.
Помогите разобраться в плагине “publish over ssh”

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

Проблема с параметризацией.

Хочу сделать job который будет выполнять команды на сервере по входящему параметру platform.
Перед тем как стартовать job выбирается параметр с цифрой от 1 до 10. Затем внутри запускается ssh соединение которое зависит от этого параметра и подключится к серверу с номером от 1 до 10 соответственно.

Есть 2 варианта настроек для плагина. Внутри джоба, в шаге там где выбирается ssh сервер.
И в настройках самого дженкинса, в разделе publish over ssh.

  1. В шаге выбора сервера. Есть кнопка advanced. В которой проставляется parameter name. Я проставляю тоже значение, что и параметра всего билда - platform
    В результате такого выполнения получаю

SSH: Skipping [test10] - Label [] does not match expression [10]

Тоесть ввели в значение параметра 10ку, чтобы выполнить тест на 10й площадке, но какой-то label не совпал, чтобу запустить все это на нужной платформе.

test10 это просто название сервера
2. Иду в настройки jenkins в раздел publish over ssh. Там в publisher defaults делаю configure defaults. И там проставляю в поле label значение к примеру 10 в поле parameter name ставлю также platform.

Результат точно такой же. Перепробовал разные варианты написания для поля label но так и не нашел работающий вариант. Google и stackoverflow также ситуацию не разъяснили для меня. Такое ощущение что глобальный раздел настроек для плагина не видит моих данных.

Если есть человек который это использовал, подскажите что и как писать в поле label, может я ошибаюсь


(Александр Таранков) #2

Судя по документации цепочка такая:

  • Parameter name = имя параметра, в котором задается regexp для поиска
    совпадения с Label. Например, имя параметра будет ServerNameRegexp
  • ServerNameRegexp = <regexp для поиска совпадения с Label>, например ^[0-9]*$
  • Label = метка для сервера, например, 10

(Andrey Kim) #3

То есть в label надо ставить 10 если я хочу, чтобы по parameter = 10 был выбран тот или иной сервер?


(Andrey Kim) #4

Разобрался, тут была проблема со старой версией. В новой версии поле label есть в настройках прямо в билде, для каждого сервера ssh.

Теперь не могу заюзать там sudo.

Другие команды проходят как надо. Если использую sudo обязательно получаю ошибку.

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000 ms]

Exec in pty включен.


(Andrey Kim) #5

Опять сам разобрался =)

Проблема в том что нельзя через sudo логиниться под другого юзера. По крайней мере у меня не получилось.
Но обычные команды вроде git pull через sudo можно использовать.