हम एक स्प्रिंग बूट वेब ऐप पर काम कर रहे हैं और जिस डेटाबेस का हम उपयोग कर रहे हैं वह MySql है ;
हमारे पास जो सेटअप है, हम पहले उसका स्थानीय स्तर पर परीक्षण करते हैं (मतलब हमें अपने पीसी पर MySql को स्थापित करने की आवश्यकता है);
फिर हम बिटबकैट पर धक्का देते हैं ;
जेनकिंस स्वचालित रूप से बिटबकैट को नए धक्का का पता लगाता है और उस पर एक निर्माण करता है (जेनकिंस mvan के निर्माण के लिए पास करने के लिए हमें जेनस्किन चलाने वाली वर्चुअल मशीनों पर MySql को स्थापित करने की भी आवश्यकता है)।
यदि जेनकींस निर्माण गुजरता है हम पर हमारे आवेदन करने के लिए कोड धक्का OpenShift (जेनकींस पर OpenShift तैनाती प्लगइन का उपयोग)।
आपके पास पहले से मौजूद समस्या के बारे में हमें पता चल सकता है:
में
application.properties
हम MySql जानकारी कोड को हार्ड नहीं कर सकते। चूंकि हमारी परियोजना 3 अलग-अलग स्थानों ( स्थानीय , जेनकिंस , और ओपनशिफ्ट ) में चल रही होगी , इसलिए हमें डेटा स्रोत क्षेत्र को गतिशील बनाने की आवश्यकता हैapplication.properties
(हम जानते हैं कि इसे करने के अलग-अलग तरीके हैं लेकिन हम अभी के लिए इस समाधान पर काम कर रहे हैं)।spring.datasource.url = spring.datasource.username = spring.datasource.password =
हम जिस समाधान के साथ आए हैं, वह है कि हम स्थानीय स्तर पर और जेनकिंस vm में सिस्टम वातावरण चर बनाते हैं (उनका नामकरण उसी तरह करते हैं जैसे OpenShift उनका नाम लेते हैं) और उन्हें क्रमशः सही मान प्रदान करते हैं:
export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"
export OPENSHIFT_MYSQL_DB_PORT="3306"
export OPENSHIFT_MYSQL_DB_USERNAME="root"
export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"
हमने यह किया है और यह काम करता है। हमने यह भी जाँच की है Map<String, String> env = System.getenv();
कि पर्यावरण चर को जावा चर में बनाया जा सकता है जैसे:
String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD");
String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME");
String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST");
String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");
अब केवल एक चीज बची है, हमें इन जावा वैरिएबल्स को अपने में उपयोग करने की आवश्यकता application.properties
है और इससे हमें परेशानी हो रही है।
जो फ़ोल्डर में, और कैसे, हम आवंटित करने के लिए की जरूरत है password
, userName
, sqlURL
, और sqlPort
के लिए चर application.properties
उन्हें देखने के लिए और कैसे हम उन्हें शामिल करते हैं सक्षम होने के लिए application.properties
?
हमने उनमें से एक होने की कई चीजों की कोशिश की है:
spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"
spring.datasource.username = ${userName}
spring.datasource.password = ${password}
अब तक कोई भाग्य नहीं। हम शायद इन एनवी चर को सही वर्ग / फ़ोल्डर में नहीं डाल रहे हैं या गलत तरीके से इनका उपयोग कर रहे हैं application.properties
।
आपकी मदद अत्यधिक सराहनीय है!!
धन्यवाद!