2016-08-08 4 views
6

यह त्रुटि मैं "इंस्टॉल करें" कदम पर हो रही है है -CodeDeploy में नाकाम रहने का उपयोग कर तैनाती "इंस्टॉल करें" की वजह से कदम त्रुटि के लिए "फाइल पहले से मौजूद है"

File already exists at location /var/cake_1.2.0.6311-beta/app/webroot/../../somefile.php 

मैं घटनाओं की क्या पाठ्यक्रम समाप्त करने के लिए असमर्थ हूँ इस परिदृश्य में लाया।

  • मैं (कोड तैनाती प्लगइन एकीकृत) जेनकींस के माध्यम से एक तैनाती शुरू की - लेकिन क्या मुझे याद है यह है। उपरोक्त चिपकने वाली त्रुटि के साथ, "इंस्टॉल" चरण पर परिनियोजन विफल रहा।

    नोट - यह appspec.yml फ़ाइल के फाइल अनुभाग में पहली फ़ाइल है।

  • जहाँ तक मुझे याद है के रूप में, मैं एक ही तैनाती समूह पर कुछ तैनाती किया था, कोड तैनाती के माध्यम से सीधे और यह सफल रहा था (संभवत कि जेनकींस ऊपर चरण में बनाए गए एक ही S3 फ़ाइल का प्रयोग करके)।

    • तब मेरे पास कई असफल तैनाती थीं (जानबूझकर विभिन्न चरणों में विफल रही थी, उदाहरण के लिए गैर शून्य संख्या से बाहर निकलने से पहले)।

इसके बाद, मैं कोड तैनाती के माध्यम से भी सीधे किसी भी सफल स्थापना के प्राप्त करने में सक्षम नहीं हूँ।

पृष्ठभूमि

मैं this question जो संबंधित और /opt/codedeploy-agent/deployment-root/​ अंदर सब कुछ को हटाने के द्वारा की कोशिश की प्रतीत होता है की जाँच की, के रूप में one of the answers में उल्लेख किया है, तथापि, यह मेरी मामलों में भ्रष्ट कोड तैनाती में हुई और जेनकींस के माध्यम से की तैनाती इस त्रुटि फेंक शुरू कर दिया संग्रह से appspec फ़ाइल कह (यह पिछले सफल तैनाती के लिए देखने के लिए कोशिश कर रहा था, ऐसा लगता है, जो हटा दिया गया) नहीं मिला था -

Jenkins triggered code deploy is failing at ApplicationStop step even though same deployment group via code deploy directly is running successfully

मैंने फिर उदाहरणों पर कोड तैनात किया और ऊपर वर्णित चरणों के बाद मैंने जो किया उसके बाद मैंने किया।

अद्यतन - शुरूआती बाउंटी

रॉड्रिगो एम द्वारा उत्तर के रूप में, उदाहरणों पर तैनाती पथ से इस तरह फ़ाइलों को हटाने मेरे लिए अब तक काम किया है, लेकिन एक ही यह एक विशेष फ़ाइल के लिए काम नहीं कर रहा -

  • ऊपर पुरुषों से फ़ाइल को हटाने के बाद -

    File already exists at location /var/cake_1.2.0.6311-beta/deployment/serverLoad.json 
    

    मैं निम्नलिखित सत्यापित सभी मामलों पर tioned स्थान, मैंने एक नई तैनाती की। मैंने देखा कि फ़ाइल फिर से दिखाई दे रही है लेकिन अभी भी ऊपर वर्णित वही त्रुटि फेंक दी गई है और तैनाती विफल रही है।

  • हटाने के बिना, मैंने फ़ाइल को 777 पर chmoded किया। वही परिणाम।

दिलचस्प है, मैं कल से अधिक फ़ाइलों के लिए यह त्रुटि आई, और के रूप में मैं उन्हें मिल गया है और एक नए निर्माण ले लिया मैं एक एक करके उन्हें एक को हटा कर दीं। इस फाइल को छोड़कर अन्य सभी फ़ाइलों के लिए समस्या ठीक हो गई है, जिसके लिए यहां तक ​​कि हटाना भी काम नहीं कर रहा है। मेरे पास कोई सुराग नहीं है!

नोट - सभी तैनाती जो मैं कर रहा हूं अब जेनकिंस द्वारा ट्रिगर किया गया है (एडब्ल्यूएस कोड तैनाती से कोई प्रत्यक्ष तैनाती नहीं हुई है)।

यहाँ प्रासंगिक त्रुटि ढेर strace युक्त /var/log/aws/codedeploy-agent/codedeploy-agent.log से लॉग निशान है -

2016-11-10 07:38:12 INFO [codedeploy-agent(16889)]: Version file found in /opt/codedeploy-agent/.version. 
2016-11-10 07:38:12 INFO [codedeploy-agent(16889)]: [Aws::CodeDeployCommand::Client 200 0.025545 0 retries] put_host_command_complete(command_status:"Failed",diagnostics:{format:"JSON",payload:"{\"error_code\":5,\"script_name\":\"\",\"message\":\"File already exists at location /var/cake_1.2.0.6311-beta/deployment/serverLoad.json\",\"log\":\"\"}"},host_command_identifier:"WyJjb20uYW1hem9uLmFwb2xsby5kZXBsb3ljb250cm9sLmRvbWFpbi5Ib3N0Q29tbWFuZElkZW50aWZpZXIiLHsiZGVwbG95bWVudElkIjoiQ29kZURlcGxveS91cy1lYXN0LTEvUHJvZC9hcm46YXdzOnNkczp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4OmRlcGxveW1lbnQvZC1VOVFPR0RBWUkiLCJob3N0SWQiOiJhcm46YXdzOmVjMjp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4Omluc3RhbmNlL2ktZWNmYzU1YTkiLCJjb21tYW5kTmFtZSI6Ikluc3RhbGwiLCJjb21tYW5kUG9zaXRpb24iOjQsImNvbW1hbmRBdHRlbXB0IjoxfV0=") 

2016-11-10 07:38:12 ERROR [codedeploy-agent(16889)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: RuntimeError - File already exists at location /var/cake_1.2.0.6311-beta/deployment/serverLoad.json - /opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:115:in `generate_normal_copy' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:67:in `block (2 levels) in generate_instructions' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:55:in `each' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:55:in `block in generate_instructions' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/install_instruction.rb:68:in `generate_instructions' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:54:in `generate_instructions' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/installer.rb:34:in `install' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:114:in `block in <class:CommandExecutor>' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:62:in `execute_command' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_poller.rb:132:in `process_command' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_poller.rb:65:in `perform' 
/opt/codedeploy-agent/lib/instance_agent/agent/base.rb:28:in `run' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:38:in `block in run' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:55:in `with_error_handling' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:37:in `run' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:70:in `block in run_with_error_handling' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:55:in `with_error_handling' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:69:in `run_with_error_handling' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:33:in `block in start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:22:in `loop' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:22:in `start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:206:in `block in spawn_child' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:204:in `fork' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:204:in `spawn_child' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:196:in `block in spawn_children' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:195:in `times' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:195:in `spawn_children' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:134:in `start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:37:in `block in start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:36:in `fork' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:36:in `start' 
/opt/codedeploy-agent/bin/../lib/codedeploy-agent.rb:41:in `block (2 levels) in <main>' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/command_support.rb:130:in `call' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/command_support.rb:130:in `execute' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:262:in `block in call_command' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:275:in `call' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:275:in `call_command' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:69:in `run' 
/opt/codedeploy-agent/bin/../lib/codedeploy-agent.rb:88:in `<main>' 

अद्यतन 2

मैं एक गंदा सुधार लागू करने के लिए, json फ़ाइल का नाम बदलने और हटाने के द्वारा सक्षम था appspec.yml में पुरानी फ़ाइल संदर्भ। हालांकि, एक नए परिनियोजन समूह (नए ec2 उदाहरणों के साथ) पर नई जेसन फ़ाइल एक ही फाइल को समस्या से बाहर निकलने का कारण बन रही है। हर बार फ़ाइल नाम बदलने के लिए दर्दनाक है। क्या हो रहा है से बहुत परेशान।

उत्तर

5

इसकी प्रक्रियाओं के भाग के रूप में, कोडडिएप ऐप/परिनियोजन समूह के लिए पहले से तैनात फ़ाइलों पर जानकारी की तलाश करेगा। यदि यह आवश्यकतानुसार नए संशोधन की तैनाती की तैयारी कर रहे मौजूदा फाइलों को हटाने के लिए इस जानकारी का उपयोग करता है।

http://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps.html#deployment-rollback

इस मामले में, वहाँ कुछ असंगत संदर्भ कारण मैनुअल सफाई करने के लिए आपने पहले किया है हो सकता है।

सभी तैनाती के लिए एक अच्छा विकल्प BeforeInstall हुक के दौरान तैनाती फ़ोल्डर में सभी फ़ाइलों को हटाना है। यह अब इस मुद्दे को ठीक करेगा और आगे बढ़ जाएगा।

+0

(--file-मौजूद है-व्यवहार (स्ट्रिंग) देखें) हम पूरे कोडबेस के बजाए तैनाती के दौरान बदलती फ़ाइलों के साथ ओवरराइट करने की योजना बनाई थी, क्योंकि यह बहुत सारी फाइलें हो सकती थीं, और अनावश्यक टी लेती थीं आईम और एस 3 बैंडविड्थ। क्या आप एक बार सभी फाइलों को हटाने या रोलआउट रणनीति के रूप में इसे अपनाने का सुझाव देते हैं? साथ ही, यदि आपको संदेह है कि मैन्युअल क्लीनअप के कारण अभी भी कुछ असंगतता है, तो क्या आप कृपया उचित और पूर्ण सफाई करने के लिए एक लिंक/संदर्भ सुझा सकते हैं? एक ताजा पुनर्स्थापित करने के बाद एक ताजा आवेदन और तैनाती समूह के साथ शुरू करना चाहिए? मैं अब भी इसका इस्तेमाल कर रहा था। –

+0

इस समस्या को ठीक करने के लिए, मैन्युअल रूप से अब तैनाती पथ में फ़ाइलों को हटाएं। एक बार इस तरह से तय हो जाने पर, अगली तैनाती काम करनी चाहिए। –

+0

धन्यवाद। कल जांचें और अपडेट करें। –

0

यह ठीक करने योग्य है। कोडेडियोजित उन फ़ाइलों पर एक त्रुटि फेंकता है जो इसे स्वयं तैनात नहीं किया गया है। लेकिन तैनाती के दौरान इसे कवर करने का एक विकल्प है।

"सामग्री विकल्प: एडब्लूएस कोड के लिए कार्रवाई को तैनाती के दौरान लेने के लिए कार्रवाई करें जब एक लक्ष्य उदाहरण पर एक फ़ाइल के समान लक्ष्य स्थान के लिए अनुप्रयोग संशोधन में फ़ाइल के समान नाम होता है।"

आप असफल, ओवरराइट और रखरखाव चुन सकते हैं। यह आपकी स्थिति पर निर्भर करता है।

आप और अधिक जानकारी प्राप्त कर सकते

संबंधित मुद्दे