Как управлять параметризованной публикацией в Jenkins с помощью публикации над плагином SSH.

В Jenkins "Опубликовать поверх Ssh" плагин, как использовать метку (дополнительные параметры), а также параметр публикации с параметризацией. Как использовать поле метки. Что я помещаю в поле "Ярлык". Мне нужно поместить имя переменной (одно из которых можно прочитать из параметра сборки), которое будет иметь имя машины. Я опробовал то же самое Вот что я сделал:

У меня было имя машины QA_1, и у меня была одна переменная jenkins build $MC_NAME, указывающая на XXX. Я ввел поле $MC_NAME в поле LABEL. но, к моему удивлению, Дженкинс публиковал машину QA_1, независимо от того, что значение переменной $MC_NAME.

Может ли какой-нибудь PLease указать мне точные шаги, чтобы контролировать, какой компьютер публиковать/запускать сценарии, используя LABEL, зарегистрированную в плагине "Опубликовать поверх Ssh" в Jenkins

Ответ 1

Вы должны включить "параметризованную публикацию" и указать имя параметра сборки, нажав кнопку "Дополнительно...", которая является последней до того, как кнопка "Добавить пост-сборку" в вашей конфигурации сборки (например, я использую раздел "Действия после сборки" ).

например. "build parameter name" = SSH_SERVER. Тогда должен быть параметр SSH_SERVER build с regexp для соответствия ярлыкам ssh серверов.

В вашем случае параметр SSH_SERVER build должен быть установлен в XXX, после этого публикация SSH должна произойти только для сервера QA_1.

Ответ 2

Answer on your question and how I configured my process:

**1. Configuring Jenkins**
1.1 Install Publish over Ssh plugin
1.2 Configure Jenkins => System Configuration
1.2.1 Publish over SSH section
1.2.1.1 Key => -----BEGIN RSA PRIVATE KEY----- ... here is your key ... -----END RSA PRIVATE KEY-----
1.2.1.2 SSH Servers =>
    * Name => Server_1 (It is only name of configuration)
    * Hostname => example_server_1.com (url of your server)
    * Username => ec2-user (for amazon)
    (Click "Add Server" button)
    * Name => Server_2 (It is only name of configuration)
    * Hostname => example_server_2.com (url of your server)
    * Username => ec2-user (for amazon)

**2. Job Configuration**
Open Job => Configure => 
1. Add String Parameter "Name=Server"
2.Check "Send files or execute commands over SSH" => SSH Server section
2.1 Name=server_1;
Exec_command=cd temp_directory(for example);
Click "Advanced" => Label=server_1;
2.2 Click "Add Server"; 
Name=server_2;
Exec_command=cd temp_directory(for example);
Click "Advanced" => Label=server_2;
2.3 In front of button "Add Server" click "Advanced"; Check "Parameterized publishing" => Parameter_name=Server

**3. Job running**

Run job and set for example server_2. You will see in log:

    SSH: Skipping [server_1] - Label server_1 does not match expression server_2
    SSH: Publishing to [server_2] - Label server_2 matches expression server_2
    SSH: Connecting from host [ip-10-0-0-37]
    SSH: Connecting with configuration [server_2] ...

It is seems that if you set server_2 job will try to compare parameter "Server" (you defined it before job starts) and labels in jobs. If label and parameter equals than exec commands in configuration.

Hope it was helpfull. Cause I spent on it 5 hours.