เรากำลังทำงานบนเว็บแอพSpring Bootและฐานข้อมูลที่เราใช้คือMySql ;
การตั้งค่าที่เรามีคือเราทดสอบในพื้นที่ก่อน (หมายความว่าเราต้องติดตั้ง MySql บนพีซีของเรา);
จากนั้นเราดันไปที่Bitbucket ;
เจนกินส์จะตรวจจับการผลักดันใหม่ไปยัง Bitbucket โดยอัตโนมัติและทำการสร้างมันขึ้นมา (สำหรับเจนกินส์ mvn บิวด์เพื่อส่งต่อเรายังต้องติดตั้ง MySql บนเครื่องเสมือนที่รันเจนกินส์)
ถ้า Jenkins สร้างรหัสผ่านเราจะส่งรหัสไปยังแอปพลิเคชันของเราบนOpenShift (โดยใช้ปลั๊กอินการปรับใช้ Openshift บน Jenkins)
ปัญหาที่เรามีตามที่คุณอาจจะคิดได้ก็คือ:
ใน
application.properties
เราไม่สามารถยากรหัสข้อมูล MySql เนื่องจากโครงการของเราจะได้รับการทำงานใน 3 สถานที่ที่แตกต่างกัน ( ท้องถิ่น , เจนกินส์และOpenShift ) เราต้องทำให้แบบไดนามิกข้อมูลแหล่งข้อมูลในapplication.properties
(เรารู้ว่ามีวิธีที่แตกต่างของการทำมัน แต่เรากำลังทำงานในการแก้ปัญหานี้ได้ในขณะนี้)spring.datasource.url = spring.datasource.username = spring.datasource.password =
วิธีแก้ปัญหาที่เราเกิดขึ้นคือเราสร้างตัวแปรสภาพแวดล้อมของระบบในเครื่องและใน Jenkins 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();
ว่าตัวแปรสภาพแวดล้อมสามารถสร้างเป็นตัวแปร java ได้เช่น:
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");
ตอนนี้สิ่งเดียวที่เหลือคือเราต้องใช้ตัวแปร java เหล่านี้ในของเราapplication.properties
และนั่นคือสิ่งที่เรากำลังมีปัญหา
ซึ่งในโฟลเดอร์และวิธีการทำเราจำเป็นต้องกำหนดpassword
, userName
, sqlURL
และsqlPort
ตัวแปรสำหรับการapplication.properties
ที่จะสามารถที่จะเห็นพวกเขาและวิธีการที่เราจะรวมไว้ในapplication.properties
?
เราได้ลองหลายสิ่งหลายอย่างหนึ่งในนั้นคือ:
spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"
spring.datasource.username = ${userName}
spring.datasource.password = ${password}
ไม่โชคดี เราอาจจะไม่ได้ใส่ตัวแปร env เหล่านี้ในระดับที่เหมาะสม / application.properties
โฟลเดอร์หรือใช้พวกเขาไม่ถูกต้องใน
ความช่วยเหลือของคุณได้รับการชื่นชมอย่างมาก !!
ขอบคุณ!