मैं जेनकिंस को एक स्क्रिप्ट को निष्पादित करने के लिए कैसे प्राप्त कर सकता हूं जो उसने गिट से खींचा था?


12

मैं जेंकिंस का उपयोग कर रहा हूं ताकि आयात नौकरियों की एक श्रृंखला को ट्रिगर और प्रबंधित कर सकूं। मैं अपनी आयात स्क्रिप्ट को गितुब में रखना चाहता हूं, और जब जेनकिन्स नौकरी का निर्माण करता है, तो उसे (क) को जीथब से बाहर के संस्करण नियंत्रित स्क्रिप्ट को खींचना चाहिए और (ख) स्क्रिप्ट को चलाना चाहिए।

समस्या यह है कि मैं भाग रहा हूं, मुझे नहीं पता कि नौकरी के भीतर चलाने के लिए स्क्रिप्ट के नाम का संदर्भ कैसे दिया जाए। मैं मान रहा हूं कि स्रोत कोड कार्यक्षेत्र निर्देशिका में खींच लिया गया है। क्या यह धारणा सही है? (यदि केवल प्रलेखन था!)

यहाँ मैंने अभी तक क्या किया है:

  1. मेरे विंडोज सर्वर पर जेनकींस (जाहिर है) स्थापित (नहीं, मेरे पास इसके बारे में कोई विकल्प नहीं था)
  2. मेरे गितुब खाते पर एक भंडार बनाया और उसमें अपना कोड डाल दिया
    • यह https://github.com/mcholl/SARS-Import/ पर सार्वजनिक है
    • आप देखेंगे कि मेरे पास दो स्क्रिप्ट, roottest.py और omniture-video \ test.py है। कोड Apple द्वारा पेटेंट के तहत है, मुझे यकीन है कि :)
    • विचार यह है कि मैं roottest.py चलाना चाहता हूँ
  3. Github प्लगइन स्थापित किया
  4. एक नौकरी इस प्रकार बनाई गई:
    • प्रोजेक्ट का नाम = "परीक्षण गितुब एकता"
    • गिटहब प्रोजेक्ट: https://github.com/mcholl/SARS-Import.git/
    • एक Windows बैच कमांड जोड़ें: अजगर roottest.py
  5. कार्य को मैन्युअल रूप से निष्पादित करें

हालाँकि, मुझे एक त्रुटि संदेश मिला है जो फ़ाइल में स्थित नहीं हो सकता है। यह अजीब है, क्योंकि मुझे लगता है कि वर्कफ़्लो होगा "स्रोत की एक स्थानीय कॉपी को ... (नौकरी) / कार्यक्षेत्र / निर्देशिका में, फिर बैच कमांड को कार्यक्षेत्र निर्देशिका के संदर्भ में चलाएं।

यहाँ पूर्ण कंसोल आउटपुट है:

कार्यक्षेत्र C: \ Program Files (x86) \ Jenkins \ jobs \ परीक्षण Github Integration \ Workspace [कार्यक्षेत्र] में उपयोगकर्ता अनाम भवन द्वारा शुरू किया गया, $ cmd / c कॉल C: \ Windows \ TEMP \ hudson1934242425043540895.bat

C: \ Program Files (x86) \ Jenkins \ jobs \ परीक्षण Github Integration \ Workspace> python roottest.py python: फ़ाइल 'roottest.py' नहीं खोल सकते: [Errno 2] कोई फ़ाइल या निर्देशिका नहीं

C: \ Program Files (x86) \ Jenkins \ jobs \ परीक्षण Github एकीकरण \ कार्यक्षेत्र> बाहर निकलें 2 बनाएँ चरण 'Execute Windows बैच कमांड' विफलता के रूप में चिह्नित बिल्ड समाप्त: विफल

जाहिर है मैं उम्मीद कर रहा था कि मैं कंसोल में अपने प्रिंट स्टेटमेंट के परिणाम देखूंगा।

मैंने क्या गड़बड़ कर दी? और मेरी स्क्रिप्ट पहले से ही क्यों नहीं है?


C: \ Windows \ TEMP \ hudson1966342425043540895 से कोड देखें। क्या आप गिट पुल का उपयोग कर रहे हैं?

जेनकिन्स स्वचालित रूप से बनाता है फिर उसे हटाता है। आप कंसोल आउटपुट में पूरी सामग्री देख सकते हैं, हालांकि - यह "पायथन रॉटेस्टस्टॉक" कमांड है जिसका मैंने ऊपर उल्लेख किया है
Affeek Geek

roottest.py आपके पथ में नहीं है। क्या आप फ़ाइल को कार्यक्षेत्र निर्देशिका में देखते हैं या क्या वह स्वचालित रूप से हटा दिया गया है? जब आप गिट पुल को चलाते हैं तो आपको क्लोन रिपॉजिटरी के स्थानीय प्रति में होना चाहिए जो मुझे विश्वास है, फिर इसे स्थानीय रेपो में किसी भी नए परिवर्तन को खींचना चाहिए। जब मैं किसी भी वास्तविक कमांड को नहीं देख सकता, तो आपकी मदद करना कठिन है।

क्या आपने github plugin wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin- के लिए इन निर्देशों का पालन किया ? आपने GIT_HOME पर्यावरण चर आदि को सेट किया?

डी 'ओह! खिड़कियों से नफरत करने का एक और कारण। धन्यवाद - मुझे लगता है कि यह मुद्दा हो सकता है
Affeek Geek

जवाबों:


5

मेरे बिल्ड (एक लिनक्स होस्ट पर) के लिए, मैं कुछ इस तरह से (जेनकींस में एक बिल्ड स्टेप के रूप में) एक निर्माण स्क्रिप्ट को नए सिरे से जाँच किए गए कार्यक्षेत्र से बाहर करने के लिए करता हूं:

निष्पादित शेल आदेश:

 sh -x $WORKSPACE/build/myproject.build

मुझे लगता है कि यह विंडोज पर समान काम करेगा, सिवाय इसके कि आप / के बजाय \ / का उपयोग करेंगे और आप अपनी स्क्रिप्ट को निष्पादित करने के लिए शेट के बजाय अजगर का उपयोग कर रहे हैं।


2

आप अपनी बिल्ड में दो लाइनें लिख सकते हैं:

chmod 777 ./my_script.sh
./my_script.sh

1
हो सकता है कि विश्व लेखन की अनुमति सर्वोत्तम विचार न हो! क्यों नहीं 755 (स्वामी लिखने, बाकी सब पढ़ा / निष्पादित करें।
kmarsh

777 वास्तव में सबसे अच्छा विचार नहीं है, लेकिन इस जवाब ने वास्तव में मेरी मदद की।
रॉबिन दिजाखोफ

0

आप Git में कुछ स्क्रिप्ट स्टोर कर सकते हैं, उदाहरण के लिए test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

फिर "Execute shell" इनपुट में, उस स्क्रिप्ट का आयात करें और "_test_func" कॉल करें:

source test.sh
_test_func

परिणाम:

 + source test.sh
 + _test_func
 test
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.