2012-11-16 8 views
10

In Jenkins "Publish over Ssh" Plugin Wie verwende ich das Label (Erweiterte Optionen) aka parametrisierte Publishing-Funktion. Wie verwende ich das Beschriftungsfeld? Was gebe ich in das Feld Label ein? Muss ich einen Variablennamen (den ich aus Build-Param lesen kann), der den Maschinennamen hätte. Ich habe das gleiche ausprobiert Hier ist, was ich getan habe:Wie man parametrisierte Veröffentlichung in Jenkins mit Publish über SSH-Plugin-Label-Feld steuern

Ich hatte eine Maschine Name QA_1 und ich hatte eine Variable Jenkins Build $ MC_NAME zeigte auf XXX. Ich habe $ MC_NAME im Feld LABEL eingegeben. aber zu meiner Überraschung veröffentlichte Jenkins auf der QA_1-Maschine, unabhängig davon, was der Wert von $ MC_NAME variierte.

Kann jemand mir bitte sagen, die genauen Schritte, welche Maschine zu steuern, indem zu veröffentlichen/Skripts ausführen LABEL in in Jenkins „Publish über Ssh“ Plugin eingereicht mit

Antwort

7

Sie sollten „parametrisierte publishing“ aktivieren und festlegen, Erstellen Sie den Parameternamen, indem Sie auf die Schaltfläche "Erweitert ..." klicken, die zuletzt vor der Schaltfläche "Add post-build action" in Ihrer Build-Konfiguration vorhanden ist (ich verwende beispielsweise den Abschnitt "Post-Build-Aktionen").

z. "Build-Parametername" = SSH_SERVER. Dann sollte SSH_SERVER Build-Parameter mit Regexp sein, um SSH-Server-Labels zu entsprechen.

In Ihrem Fall sollte SSH_SERVER Build-Parameter auf XXX festgelegt werden, danach sollte SSH-Veröffentlichung nur für QA_1 Server passieren.

+0

Ah, verpassten nur auf die Schaltfläche Erweitert, die Übertragung Set-Taste, Vielen Dank für die Hilfe Geck – RamNat

+0

Dies gilt auch veröffentlichen über FTP (und wahrscheinlich alle anderen Plug-in in dem veröffentlichen über present unten ist ... "Es dauerte eine Weile, bis ich herausfand, warum ich über FTP meine Labels ignorierte. Docs: https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over#PublishOver-Parametername – AlexMA

+0

Kann mir jemand erklären was ist der Punkt von "Label" Feld dann? –

10
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. 
+0

Vielen Dank lieber Freund. Du hast es so schön erklärt. Arbeitete wie ein Charme. –

+0

@JamesSelvakumar Gern geschehen) – IgorN