2015-11-26 11 views
13

चल इनकार किया मैं बहुत की तरह एक circle.yml फ़ाइल है: जब मैं आदेशों के अंदर रहते हैं चलानेCircleCI अनुमति बैश स्क्रिप्ट

/home/ubuntu/myproject/deploy.sh returned exit code 126 

bash: line 1: /home/ubuntu/myproject/deploy.sh: Permission denied Action failed: /home/ubuntu/myproject/deploy.sh 

:

dependencies: 
    override: 
    - meteor || curl https://install.meteor.com | /bin/sh 

deployment: 
    production: 
    branch: "master" 
    commands: 
     - ./deploy.sh 

जब मैं Github करने के लिए धक्का है, मैं त्रुटि मिलती है फ़ाइल के बाहर deploy.sh (commands के तहत) सब कुछ ठीक चलाता है।

circle.yml फ़ाइल में

सब कुछ .. CircleCI docs में उदाहरण के साथ लाइन में हो रहा है क्या मैं गलत कर रहा हूँ?

उत्तर

18

कई संभावित समस्याओं:

  1. deploy.sh (chmod +x deploy.sh इसे ठीक होगा)
  2. deploy.sh की पहली पंक्ति एक runnable खोल नहीं हो सकता है ...
  3. निष्पादन योग्य के रूप में चिह्नित नहीं किया जा सकता

तो पहले से काम नहीं करता है, हम कृपया deploy.sh की सामग्री को देख सकते हैं?

16

मुझे एक ही समस्या थी। मैंने इसे काम करने के लिए अपने कमांड सेक्शन के सामने sh जोड़ा।

deployment: 
    production: 
    branch: "master" 
    commands: 
     - sh ./deploy.sh 

उम्मीद है कि फिक्स हर किसी को आगे बढ़ने से बचाता है।

+0

मुझे पता चला कि यह समाधान स्क्रिप्ट निष्पादित करने के लिए काम करता है, हालांकि '' 'sh''' का उपयोग करके कुछ एक्सटेंशन अक्षम होते हैं। https://unix.stackexchange.com/questions/155838/shell-script-throws-a-not-found-error-when-run-from-a-sh-file-but-if-entered-ma – eczajk

+1

@ eczajk तो इसके बजाय '- bash।/deploy.sh' का उपयोग करें। – MikeSchinkel

+1

@ माइकस्चिंकेल धन्यवाद, जो मेरे लिए काम करता है – eczajk

0

जैसा कि @palfrey का कहना है कि स्क्रिप्ट शायद निष्पादन योग्य के रूप में चिह्नित नहीं है, और कभी-कभी यह आपके स्थानीय मशीन पर आपकी स्क्रिप्ट पर chmod +x चलाते समय भी तैनाती पर गलत चिह्नित किया जाता है। (क्यों? मुझे नहीं पता। अगर कोई मुझे प्रसन्न करता है तो कृपया मुझे बताएं!)

यह सुनिश्चित करने के लिए एक सामान्य कमांड है कि आपकी स्क्रिप्ट हमेशा निष्पादन योग्य के रूप में चिह्नित की जाती हैं। यह मानता है कि वे सभी /home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts निर्देशिका में स्थित हैं और सभी में .sh एक्सटेंशन है। यदि आपकी निर्देशिका (हैं) अलग हैं, तो इसके बजाय अपनी निर्देशिका का उपयोग करने के लिए संपादित करें।

SCRIPTS="/home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts" 
find "${SCRIPTS}" | grep "\.sh$" | xargs chmod +x 
:

मेरे सभी लिपियों source एक साझा स्क्रिप्ट (shared.sh) प्रत्येक स्क्रिप्ट के शीर्ष पर है कि shared.sh जो सभी लिपियों सुनिश्चित करता है करने के लिए circle.yml मैं निम्नलिखित कोड जोड़ने के द्वारा कहा जाता है के बाद से निष्पादन योग्य के रूप में चिह्नित कर रहे हैं

एक आकर्षण की तरह काम करता है। :-)