Ми працюємо над веб-програмою Spring Boot , і база даних, яку ми використовуємо, - MySql ;
у нас є те, що ми спочатку перевіряємо її локально (означає, що нам потрібно встановити MySql на нашому ПК);
потім ми натискаємо на Bitbucket ;
Дженкінс автоматично виявляє новий поштовх до Bitbucket і робить його на основі (для того, щоб здати конструкцію Jenkins mvn, нам також потрібно встановити MySql на віртуальних машинах, на яких працює Дженкінс).
якщо пропуск Дженкінса будує, ми відсилаємо код до нашої програми на OpenShift (використовуючи плагін розгортання Openshift на Jenkins).
Проблема, яку ми маємо, як ви вже зрозуміли, полягає в тому, що:
в
application.properties
ми не можемо важко кодувати інформацію MySql. Оскільки наш проект буде працювати в трьох різних місцях ( локальному , Jenkins та OpenShift ), нам потрібно зробити поле джерела даних динамічнимapplication.properties
(ми знаємо, що це робиться по-різному, але зараз ми працюємо над цим рішенням).spring.datasource.url = spring.datasource.username = spring.datasource.password =
Ми придумали рішення: ми створюємо змінні системного середовища локально та в vm Jenkins (називаючи їх так само, як 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
.
Ваша допомога високо цінується !!
Дякую!