पृष्ठभूमि से हटा दिया जा रहा हैफ़ाइलें नष्ट कर दिया या Git संशोधनों के बीच संशोधित स्वचालित रूप से उदाहरणों
मैं एक सेटअप के साथ निम्नलिखित जेनकींस से शुरू हो रहा है -
- फ़ाइलों Phing द्वारा तैयार किया जाता तैनात किया जाना, Git सर्वर से बात कर रही है और इसमें अलग बिल्ड सर्वर में आवश्यक Git संशोधनों के बीच एक
git diff
ले, एडब्ल्यूएस कोड तैनाती की भागीदारी के बिना, द्वारा (जहाँ तक मुझे लगता है कि)। फ़िंग बिल्ड जेनकींस द्वारा ट्रिगर किया गया है। - मैं केवल फाइलों गतिशील appspec.yml फ़ाइल में जोड़ने के लिए/संशोधित (संशोधन Git अंतर के आधार पर) जोड़ें। मैं एक रास्ता
/home/jenkins/deployment/cd_deploy/codebase/
करने के लिए संशोधित केवल फाइलों जोड़े जाने के लिए/तैयार करने और मैं जेनकींस परियोजना के "उन्नत परियोजना विकल्प" के अंतर्गत पथ/home/jenkins/deployment/cd_deploy/
"कस्टम कार्यक्षेत्र का प्रयोग करें" के अंतर्गत विकल्प जो मूल रूप से बिल्ड सर्वर में स्थान जो की जरूरत है है निर्दिष्ट किया है एस 3 बाल्टी पर अपलोड किया गया। ध्यान दें कि मैं उदाहरणों कि दो Git संशोधनों के बीच नष्ट हो जाती हैं से फ़ाइलों को हटाने की आवश्यकता होगी। - जेनकिंस फिर एडब्ल्यूएस कोडित नियोजन को एप्लिकेशन नाम, तैनाती कोड कोड के तैनाती समूह के बारे में जानकारी के साथ ट्रिगर करता है।
समस्या
फ़ाइलें जो मैं गतिशील रूप से संशोधित किया जा रहा है/EC2 उदाहरणों में जोड़ा, जैसा कि मैंने उम्मीद है, तथापि, अजीब, फ़ाइलें हैं कि हटाए जाने के लिए appspec.yml फ़ाइल में जोड़ने के लिए हटा भी जा रहे हैं। मैंने सत्यापित किया कि मेरे ऐपस्पेक फ़ाइल के पहले इंस्टॉल हुक में लिखी गई फ़ाइलों को हटाने के लिए मेरे पास कोई तर्क नहीं है। मेरे पास पहले से इंस्टॉल करें Istall.sh फ़ाइल में पहले से ही हैक, और कोई अन्य हुक नहीं है। जैसे ही मैं ऐपपेक फ़ाइल से उस हुक को हटा देता हूं, विलोपन बंद हो जाता है।
version: 0.0
os: linux
files:
{Pair of files dynamically generated}
- source: config/deployment_config.json
destination: /var/cake_1.2.0.6311-beta/deployment
permissions:
- object: .
pattern: "**"
owner: sandeepan
group: sandeepan
mode: 777
type:
- file
hooks:
BeforeInstall:
- location: beforeInstall.sh
एडब्ल्यूएस Codedeploy किसी भी तरह मेरी Git होस्टिंग से बात कर (मैं gitlab और नहीं भी GitHub उपयोग कर रहा हूँ) और किसी भी तरह फ़ाइलों के बारे में जानकारी प्राप्त करने के हटाए जाने के लिए है - यहाँ मेरी appspec फ़ाइल है।
अद्यतन
मैं बाद में कहा कि यहां तक कि केंद्रीय निर्माण से appspec.yml फ़ाइल से पूरी तरह से हुक खंड को दूर करने, और हटाने इसी .sh फ़ाइलें, यानी beforeInstall.sh, afterInstall.sh आदि के बाद सर्वर (जहां एस 3 बंडल तैयार किया गया है), ताकि मेरा कोई भी तर्क और इसका कोई भी संदर्भ उदाहरणों पर जा रहा न हो, जो फ़ाइलों को हटाया जाना है, वे अभी भी स्वचालित रूप से हटाए जा रहे हैं।
अद्यतन 2
आज मैंने पाया कि फ़ाइलें जो Git संशोधनों के बीच में संशोधित कर रहे हैं भी स्वचालित रूप से हटा कर रहे हैं। मुझे गतिशील रूप से appspec.yml फ़ाइल तैयार करने के लिए तर्क था। मैंने कुछ फाइलें जोड़ने के लिए संशोधित नहीं किया। तो, कुछ फाइलें थीं जो गिट diff में थीं, लेकिन ऐपस्पेक फ़ाइल में नहीं थीं। नतीजतन, वे हटा रहे हैं लेकिन फिर से दिखाई नहीं दे रहे हैं। तैनाती से पहले कोड परिनियोजन स्वचालित रूप से एक सफाई कर रहा है, ऐसा लगता है। मैं इसे कैसे रोकूं? मैं अपना कस्टम क्लीनअप तर्क जोड़ना चाहता हूं।
अद्यतन beforeInstall.sh की 3
सामग्री -
OUTPUT="$(w | grep -Po '(?<=load average:)[^,]*')"
rm -f /var/cake_1.2.0.6311-beta/deployment/deployment_config.json
path="$PWD"
php $path"/deployment-root/"$DEPLOYMENT_GROUP_ID"/"$DEPLOYMENT_ID"/deployment-archive/beforeInstall.php" ${OUTPUT}
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_hiphop_error /mnt/log/hiphop/error_`(date +'%Y%m%d')`.log #Just run a nagios check, so that counter corresponds to the line in the log corresponding to current timestamp/instant. Do not care about output. Note that we are not even looking for error hinting keywords (and hence not using -p because it needs to be used alongwith), because all we need to care about here is incrementing the nginx counter.
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx_access /mnt/log/nginx/access_`(date +'%Y%m%d')`_`(date +'%H')`.log #Just run a nagios check, so that counter corresponds to the line in the log corresponding to current timestamp/instant. Acceptable http codes are also not being read from deployment_config.json.
printf "\n `date +%Y-%m-%d:%H:%M:%S` End of beforeInstall.sh" >> /var/cake_1.2.0.6311-beta/deployment/deployment.log
exit 0
और beforeInstall.php की सामग्री है जो ऊपर से कहा जाता है -
<?php
file_put_contents('/var/cake_1.2.0.6311-beta/deployment/deployment.log', "\n ".date("Y-m-d H:i:s")." - Load print ".$argv[1], FILE_APPEND);
$loadData = json_encode(array("load" => intval($argv[1]), "access_error_check_day" => date("Ymd"), "access_error_check_hour" => date("H"))); //error_check_day -> day when nagios error check was last run. We will accordingly check log files of days in between this day and the day of afterinstall (practically this can include a span of 2 days).
file_put_contents("/var/cake_1.2.0.6311-beta/deployment/serverLoad.json",$loadData); //separate from deployment_config.json. serverLoad.json is not copied from build server.
file_put_contents('/var/cake_1.2.0.6311-beta/deployment/deployment.log', "\n ".date("Y-m-d H:i:s")." loadData to config ".$loadData, FILE_APPEND);
?>
अपनी स्थापित स्क्रिप्ट से पहले पोस्ट करें। मुझे लगता है कि आप उन्हें हटा रहे हैं। – mttdbrd
@mttdbrd कृपया प्रश्न के 3 खंड अपडेट करें। –
मेरे पास सभी फाइलों को हटाने के लिए कोई तर्क नहीं है। मेरे पास बाद में चरण में कुछ था, लेकिन यह केवल हटाए जाने वाली फ़ाइलों को हटाने के लिए था (गिट diff के अनुसार)। हुक अनुभाग में बाद में चरण को हटाने से उस शून्य को कम करना चाहिए। जैसा कि मैंने लिखा है, हुक अनुभाग पूरी तरह से हटाने के बाद भी, फ़ाइलें अभी भी हटाई जा रही हैं। –