2012-11-16 45 views
10

जेनकींस "Publish over Ssh" प्लगइन में मैं लेबल (उन्नत विकल्प) उर्फ ​​पैरामीटरेटेड प्रकाशन सुविधा का उपयोग कैसे करूं। मैं लेबल फ़ील्ड का उपयोग कैसे करूं? मैं लेबल फ़ील्ड में क्या डालूं। क्या मुझे एक वैरिएबल नाम डालने की ज़रूरत है (जिसे मैं बिल्ड पैरामीटर से पढ़ सकता हूं) जिसमें मशीन का नाम होगा। मैंने उसी को आजमाया है: मैंने यह किया है:एसएसएच प्लगइन के लेबल फ़ील्ड पर प्रकाशित का उपयोग करके जेनकिंस में पैरामैट्रिज्ड प्रकाशन को नियंत्रित करने के लिए कैसे करें

मेरे पास मशीन नाम QA_1 था और मेरे पास एक वैरिएबल जेनकिन्स $ XXX_NAME की ओर इशारा करते थे। मैंने लैबेल क्षेत्र में $ MC_NAME दर्ज किया। लेकिन मेरे आश्चर्य के लिए जेनकिंस QA_1 मशीन पर प्रकाशित हो रहा था चाहे वह $ MC_NAME चर के मूल्य के बावजूद।

कुछ एक कृपया मेरी जो मशीन में दायर लेबल का उपयोग करके प्रकाशित करने के लिए/चलाने स्क्रिप्ट को नियंत्रित करने के सटीक चरण बता सकते हैं जेनकींस में प्लगइन "SSH पर प्रकाशित करें"

उत्तर

7

आप "पैरामिट्रीकृत प्रकाशन" सक्षम और निर्दिष्ट करना चाहिए अपने उन्नत कॉन्फ़िगरेशन में "पोस्ट-बिल्ड एक्शन जोड़ें" बटन से पहले "उन्नत ..." बटन पर क्लिक करके पैरामीटर नाम बनाएं (उदाहरण के लिए मैं पोस्ट-बिल्ड क्रिया अनुभाग का उपयोग करता हूं)।

उदा। "पैरामीटर नाम बनाएं" = SSH_SERVER। फिर ssh सर्वर लेबल से मेल खाने के लिए regexp के साथ SSH_SERVER बिल्ड पैरामीटर होना चाहिए।

आपके मामले में, SSH_SERVER बिल्ड पैरामीटर XXX पर सेट किया जाना चाहिए, उसके बाद एसएसएच प्रकाशन केवल QA_1 सर्वर के लिए होना चाहिए।

+0

आह, बस उन्नत बटन है कि मौजूद है नीचे स्थानांतरण सेट बटन जोड़ें, धन्यवाद मदद – RamNat

+0

के लिए बहुत कुछ दोस्त यह भी प्रकाशित ओवर में एफ़टीपी (और शायद किसी भी अन्य प्लग से अधिक प्रकाशित करने के लिए लागू होता है याद किया ... परिवार ")। मुझे यह पता लगाने में कुछ समय लगा कि एफ़टीपी पर प्रकाशित क्यों मेरे लेबल को अनदेखा कर रहा था। डॉक्स: https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over#PublishOver-Parametername – AlexMA

+0

क्या कोई समझा सकता है तब "लेबल" फ़ील्ड का बिंदु क्या है? –

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

धन्यवाद बहुत प्यारा दोस्त। आपने इसे बहुत सुंदर बताया। –

+0

@ जेम्ससेल्वकुमार आपका स्वागत है) – IgorN