Kami sedang mengerjakan aplikasi web Spring Boot dan database yang kami gunakan adalah MySql ;
setup yang kita miliki adalah pertama kita mengujinya secara lokal (berarti kita perlu menginstal MySql pada PC kita);
lalu kita dorong ke Bitbucket ;
Jenkins secara otomatis mendeteksi dorongan baru untuk Bitbucket dan melakukan build di atasnya (untuk membangun Jenkins, kita juga perlu menginstal MySql pada mesin virtual yang menjalankan Jenkins).
jika Jenkins build pass, kami mendorong kode ke aplikasi kami di OpenShift (menggunakan plugin penempatan openshift di Jenkins).
Masalah yang kami miliki karena Anda mungkin sudah mengetahuinya adalah:
di
application.properties
kita tidak bisa hard kode info MySql. Karena proyek kami akan berjalan di 3 tempat yang berbeda ( lokal , Jenkins , dan OpenShift ), kami perlu membuat bidang sumber data dinamisapplication.properties
(kami tahu ada cara berbeda untuk melakukannya tetapi kami sedang mengerjakan solusi ini untuk saat ini).spring.datasource.url = spring.datasource.username = spring.datasource.password =
Solusi yang kami temukan adalah kami membuat variabel lingkungan sistem secara lokal dan dalam Jenkins vm (menamainya dengan cara yang sama dengan OpenShift menamainya) dan menetapkan nilai yang tepat untuk masing-masingnya:
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"
Kami telah melakukan ini dan berhasil. Kami juga telah memeriksa Map<String, String> env = System.getenv();
bahwa variabel lingkungan dapat dibuat menjadi variabel java seperti:
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");
Sekarang satu-satunya yang tersisa adalah kita perlu menggunakan variabel-variabel java di kita application.properties
dan itulah yang kita mengalami masalah dengan.
Di mana folder, dan bagaimana, kita perlu menetapkan password
, userName
, sqlURL
, dan sqlPort
variabel untuk application.properties
dapat melihat mereka dan bagaimana kita memasukkan mereka dalam application.properties
?
Kami telah mencoba banyak hal, salah satunya adalah:
spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"
spring.datasource.username = ${userName}
spring.datasource.password = ${password}
Tidak beruntung sejauh ini. Kami mungkin tidak meletakkan variabel env ini di kelas / folder yang benar atau menggunakannya secara salah application.properties
.
Bantuan Anda sangat dihargai !!
Terima kasih!