2011-12-27 23 views
49

में प्रोग्राम "ग्रेडल" नहीं चलाया जा सकता है मैंने जेनकींस के लिए ग्रैडल प्लगइन स्थापित किया है। अपेक्षा के अनुरूप काम करता हैजेनकींस

[workspace] $ gradle clean -b build/build.gradle 
FATAL: command execution failed 
java.io.IOException: Cannot run program "gradle" (in directory "/Users/Shared/Jenkins/Home/jobs/test/workspace"): error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:707) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:338) 
    at hudson.Launcher$ProcStarter.join(Launcher.java:345) 
    at hudson.plugins.gradle.Gradle.performTask(Gradle.java:201) 
    at hudson.plugins.gradle.Gradle.perform(Gradle.java:97) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) 
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:695) 
    at hudson.model.Build$RunnerImpl.build(Build.java:178) 
    at hudson.model.Build$RunnerImpl.doRun(Build.java:139) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:465) 
    at hudson.model.Run.run(Run.java:1404) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:238) 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:91) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
    ... 16 more 
Build step 'Invoke Gradle script' changed build result to FAILURE 
Build step 'Invoke Gradle script' marked build as failure 
Finished: FAILURE 

कमांड लाइन से काम चल रहा है $ gradle clean -b build/build.gradle: जब मैं इस परियोजना मैं निम्नलिखित त्रुटि मिलती है निर्माण करने के लिए प्रयास करें।

+0

लिए (डिफ़ॉल्ट) से Gradle संस्करण को बदल आप कर रहे हैं सुनिश्चित करें कि जेनकिंस में सही क्रमिक पथ है? मेरे पास मेरी बिल्ड मशीन उपलब्ध नहीं है, लेकिन मुझे लगता है कि आपको ग्रेडल प्लगइन के लिए एक ग्रेडल होम पथ कॉन्फ़िगर करना होगा। – thoredge

+0

यह मेरे जैसा ही है .profile –

+0

"ऐसी कोई फ़ाइल या निर्देशिका नहीं" बहुत स्पष्ट है। जेनकिंस 'ग्रेबल' निष्पादन योग्य नहीं ढूंढ सकते हैं। शायद यह ओएस उपयोगकर्ता के रास्ते पर नहीं है जो जेनकींस नौकरी चलाता है। किसी भी मामले में, मैं एक सीआई मशीन पर ग्रैडल रैपर का उपयोग करने की सलाह देता हूं। –

उत्तर

57

मुझे एक ही समस्या थी और पाया कि मेरे लिए समस्या प्रोजेक्ट कॉन्फ़िगरेशन में क्रमिक संस्करण था। यह पर सेट किया गया था डिफ़ॉल्ट और जब मैंने इसे ग्रेडल संस्करण में सेट किया था, तो मैं में प्लगइन कॉन्फ़िगरेशन में इंगित कर रहा था, जेनकिन्स>कॉन्फ़िगरेशन विकल्प प्रबंधित करें, यह धीरे-धीरे मिला और ठीक से काम किया।

डीबग करने के लिए यह एक कठिन मुद्दा है और मुझे उम्मीद है कि यह किसी और को बचाएगा।

+0

हां, मेरे लिए परीक्षण किया गया है कि यह मामला है, ग्रैडल संस्करण का चयन करने के लिए ड्रॉप डाउन बॉक्स छुपा था, और मुझे इसे दिखाने के लिए स्पष्ट रूप से ग्रैडल संस्करण रेडियो बटन का चयन करना पड़ा, मुझे लगता है कि यह एक बग है। एक बार ग्रैडल संस्करण (डिफ़ॉल्ट के अलावा) का चयन करने के बाद, यह ठीक काम कर रहा था। धन्यवाद। –

+0

यह एक आकर्षण की तरह काम किया! आगे नहीं देखा! – geoand

+2

आप वास्तविक ग्रेडल संस्करण को स्पष्ट रूप से दर्ज या चुनते हैं? यह मुझे डिफ़ॉल्ट – jonney

1

जेनकींस को निष्पादन योग्य नहीं मिल सकता है। मैंने काम करने के लिए कभी भी ग्रेपल रैपर नहीं बनाया है। यह करने के लिए, उदाहरण के लिए,/usr/स्थानीय/lib/Gradle,

  • खुला/etc/प्रोफ़ाइल

    • डाउनलोड Gradle (http://gradle.org/downloads),
    • खोल और निम्नांकित दो पंक्तियों को जोड़ें: निम्नलिखित चरणों का पालन करें :
    • निर्यात GRADLE_HOME =/usr/स्थानीय/lib/Gradle
    • निर्यात पथ = $ पथ: $ GRADLE_HOME/bin

    यह my jenkins installation लिए काम करता है ।

    ps। मैं इस पुराने सवाल का जवाब देता हूं, क्योंकि जेनकींस के साथ धीरे-धीरे स्थापित करते समय यह एक आम समस्या है। मैंने कुछ समय पहले सफलता के बिना ग्रेबल रैपर काम करने की कोशिश कर बिताया है।

  • +0

    मैंने bash_profile के तहत gradle_home सेट किया है, फिर भी यह मेरे लिए एक ही समस्या है –

    0

    जैसा कि अन्य ने ध्यान दिया है, ऐसा इसलिए है क्योंकि जेनकिंस को निष्पादन योग्य नहीं मिल सकता है।

    प्रकाशित समाधानों में से कोई भी मेरे लिए काम नहीं करता है, लेकिन मैं बिल्ड गुलाम पर बिल्ड खाते के लिए .bashrc में पथ सेट पर ग्रेबल बिन डीआईआर जोड़कर समस्या को ठीक करने में सक्षम था। .profile को संशोधित करना विफल रहा, और जेनकींस नोड कॉन्फ़िगरेशन में पथ स्थापित करना भी असफल रहा।

    कुछ पोस्ट टूल्स मेनू में ग्रेडल पथ सेट करने का सुझाव देंगे, लेकिन वहां कोई भी ग्रेडल प्रविष्टि उपलब्ध नहीं थी (शायद ग्रेबल प्लगइन में रीग्रेशन/डिज़ाइन परिवर्तनों के कारण?)।

    किसी भी मामले में, सबसे अच्छा परीक्षण मैंने पाया (निर्माण फिर से चल रहा है और विफलता के लिए देख रहा है की कमी) env SSH पर चलाने के लिए किया गया था:

    ssh <host> env 
    

    और पथ चर कि जिस तरह से परिभाषित की जांच; यदि उस रास्ते में ग्रेडल नहीं है, तो आप शायद इसे जेनकींस से चलाने में सक्षम नहीं होंगे।

    20

    समाधान Mastering_the_Object ने बताया मुझे भी रूप है, सिर्फ वहाँ चरणों स्पष्ट करने के लिए काम किया:
    जेनकींस में सिर्फ स्थापित करने Gradle प्लगइन पर्याप्त नहीं है, आप भी के पास जाना चाहिए:>
    Jenkins- प्रबंधित Jenkins-> कॉन्फ़िगर जेनकींस -> सिस्टम को विन्यस्त करें।
    नाम में "ग्रैडल इंस्टॉलेशन" प्रकार के तहत (यह प्रोजेक्ट कॉन्फ़िगरेशन में संस्करण के रूप में दिखाई देता है), "स्वचालित रूप से इंस्टॉल करें" की जांच करें और संस्करण का चयन करें। फिर आप प्रोजेक्ट कॉन्फ़िगरेशन में उस "ग्रैडल संस्करण" का चयन कर सकते हैं।

    +0

    +1 इस स्थान को कैसे ढूंढें इस पर समाधान को इंगित करने के लिए विन्यास। सेटिंग्स को बदलने के लिए कई सुझावों को देखा होगा लेकिन कोई भी नहीं कहता कि इसे कहां मिलना है। – Lmickos

    +0

    @pad इससे मुझे भी मदद मिली। धन्यवाद। – DMA

    1

    काम करने के लिए यहां कई अन्य समाधान @Skarab & दोनों का उपयोग किया गया।

    डाउनलोड Gradle (http://gradle.org/downloads), खोल यह, उदाहरण के लिए,/usr/स्थानीय/lib/Gradle, खुला/etc/प्रोफ़ाइल और निम्नांकित दो पंक्तियों को जोड़ने के लिए: निर्यात GRADLE_HOME =/usr/स्थानीय/lib/Gradle निर्यात पथ = $ पथ: $ GRADLE_HOME/bin

    फिर तहत जेनकींस> कॉन्फ़िगर प्रणाली> Gradle, परिभाषित GRADLE_HOME का प्रबंधन और दे दी है कि Gradle स्थापना एक नाम

    फिर, {यह एक बग हो सकता है} के लिए प्रोजेक्ट, डिफ़ॉल्ट से धीरे-धीरे संस्करण को बदलें जिसे मैंने

    से ऊपर परिभाषित किया है 210
    11

    जेनकिंस जैसे सीआई मशीन पर ग्रैडल चलाते समय, ग्रैडल रैपर का उपयोग करना सबसे सुविधाजनक है।

    अपने विकास मशीन पर, अपने रूट परियोजना निर्देशिका में खड़े होकर चलाने

    gradle wrapper 
    

    फिर, अपने स्रोत नियंत्रण प्रणाली में जिसके परिणामस्वरूप फाइलों में जाँच करें। उसके बाद, यदि आपको ग्रैडल संस्करणों को बदलने की आवश्यकता है तो आपको अपने जेनकिंस सर्वर पर कुछ भी इंस्टॉल करने की आवश्यकता नहीं है। Gradle User Guide से हवाला देते हुए

    enter image description here

    :: बस इस तरह से अपनी जेनकींस काम कॉन्फ़िगर

    By distributing the wrapper with your project, anyone can work with it without needing to install Gradle beforehand. Even better, users of the build are guaranteed to use the version of Gradle that the build was designed to work with. Of course, this is also great for continuous integration servers (i.e. servers that regularly build your project) as it requires no configuration on the server.

    +0

    यह लगभग किसी भी उद्यम के लिए एक उचित सुझाव नहीं है। यह महत्वपूर्ण है कि हम अपने कलाकृतियों के स्रोतों पर भरोसा करते हैं, और इसलिए अधिकांश उद्यम एक आंतरिक भंडार का उपयोग करते हैं। GradleW केवल तभी काम करता है जब उसके पास इंटरनेट तक पहुंच हो। मैं यह नहीं कह रहा हूं कि यह अन्य वातावरण में उचित नहीं है, मैं बस यह इंगित कर रहा हूं कि यह शायद किसी उद्यम में काम नहीं करेगा। –

    +3

    ऐसा नहीं है। रैपर आपके द्वारा प्रदान किए जाने वाले यूआरएल से खुश है, इसलिए इसे इंटरनेट एक्सेस की आवश्यकता नहीं है। हमारे पास एक आर्टिफैक्टरी सर्वर (किसी भी HTTP सर्वर करेगा) में, ग्राडल की स्थानीय रूप से कैश की गई प्रतिलिपि है। 'Gradle-wrapper.properties 'को आधिकारिक रेपो के बजाय आंतरिक यूआरएल की ओर इशारा किया जाना चाहिए। यह आधिकारिक सर्वर को भी ऑफ़लोड करता है, और हमारे स्थानीय लुसर्स के लिए बेहतर बिल्ड गति प्रदान करता है। रैपर के पहले डाउनलोड के बाद, आपको अपने पीसी पर निर्माण करने के लिए कोई नेटवर्क कनेक्शन की आवश्यकता नहीं है - और सीआई मशीनों के पास हमारे स्थानीय रेपो की निरंतर पहुंच है। – Jolta

    +1

    एक रैपर का उपयोग करना वास्तव में एक बेहतर समाधान है क्योंकि आपको जेनकिन की वैश्विक कॉन्फ़िगरेशन और प्रोजेक्ट की कॉन्फ़िगरेशन में संस्करणों के मिलान के आसपास सभी कड़ी मेहनत करने की आवश्यकता नहीं है। बहुत आसान! – iCrus

    6

    मैं Gradle आवरण का उपयोग कर इस त्रुटि हो रही थी, इस प्रकार मेरी टूट निर्माण को ठीक करने में सक्षम था:

    1. पर जाएं जेनकींस प्रबंधित करें -> वैश्विक उपकरण कॉन्फ़िगरेशन -> ग्रैडल -> ग्रेड जोड़ें, जीआई > (अपने काम) - - यह जेनकींस के लिए एक नाम ve
    2. जाओ> कॉन्फ़िगर -> निर्माण, चुनें "आह्वान Gradle" और नामित संस्करण