2012-11-16 7 views
10

W wtyczce Jenkins "Publish over Ssh" w jaki sposób korzystać z etykiety (opcje zaawansowane), czyli funkcji sparametryzowanego publikowania. Jak korzystać z pola etykiety. Co umieszczam w polu Etykieta. Czy muszę wstawić nazwę zmiennej (taką, którą mogę odczytać z parametru budowania), która miałaby nazwę komputera? Wypróbowałem to samo: Oto, co zrobiłem:Jak kontrolować publikowanie parametryczne w Jenkins przy użyciu opcji Publikuj w polu Etykieta wtyczki SSH

Posiadałem nazwę komputera QA_1, a ja miałem jedną zmienną Jenkins budującą $ MC_NAME wskazującą na XXX. Wprowadziłem $ MC_NAME w polu LABEL. ale ku mojemu zaskoczeniu Jenkins publikował na maszynie QA_1 niezależnie od wartości zmiennej $ MC_NAME.

Czy ktoś proszę mi powiedzieć dokładnie kroki, aby kontrolować, które maszyna do publikowania/uruchamianie skryptów za pomocą LABEL złożonej w „Publish przez ssh” wtyczki w Jenkins

Odpowiedz

7

należy włączyć „parametryczne publishing” i określić buduj nazwę parametru klikając przycisk "Zaawansowane ...", który jest ostatni przed "Dodaj akcję po budowaniu" przycisk w konfiguracji kompilacji (na przykład korzystam z sekcji działań po kompilacji).

E.g. "nazwa parametru budowania" = SSH_SERVER. Następnie powinien istnieć parametr budowania SSH_SERVER z regexp, aby dopasować etykiety serwerów ssh.

W twoim przypadku parametr budowania SSH_SERVER powinien mieć wartość XXX, po czym publikacja SSH powinna nastąpić tylko dla serwera QA_1.

+0

Ach, po prostu brakowało przycisk Zaawansowane, który jest obecny poniżej przycisk Dodaj łącznikowej, dzięki dude dużo za pomoc – RamNat

+0

Odnosi się to również do publikowania przez FTP (i prawdopodobnie innych wtyczek w publikuje ponad ... rodzina ") Zajęło mi trochę czasu, aby dowiedzieć się, dlaczego publikowanie przez FTP ignoruje moje etykiety. Dokumenty: https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over #PublishOver-Parametername – AlexMA

+0

Czy ktoś może wyjaśnić o co chodzi w polu "Etykieta"? –

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

Wielkie dzięki, drogi przyjacielu, wyjaśniłeś to tak pięknie, zadziałało jak wdzięk –

+0

@JamesSelvakumar Serdecznie zapraszamy! – IgorN

Powiązane problemy