#programowanie #java #spring #maven Mam taki oto zestaw: 1. Prosta aplikacja w Springu trzymana w publicznym repozytorium na GitHubie 2. Postawiony u mnie Tomcat wraz z Jenkinsem
Aplikacja łączy się z bazą danych, mam zatem plik application.yml, który zawiera hasło, adres bazy itp. Mam go dodanego do .gitignore, bo nie chcę by było to widoczne na GitHubie. Jenkins buduje aplikację przy pomocy Mavena i korzysta z tego właśnie repozytorium na GitHubie. Aplikacja zostaje zbudowana, ale Tomcat nie może jej odpalić z racji braku ustawień połączenia z bazą. Czy mogę mavenowi jakoś podsunąć ten plik na czas builda? Tak by nie umieszczać go w repozytorium? Coś na zasadzie --Dspring.profiles.active ale z plikiem z konfiguracją a nie nazwą profilu?
Czy może się tym nie przejmować i umieścić to application.yml w repozytorium, bo i tak baza jest postawiona na tej samej maszynie co tomcat, więc adres do bazy jest jako localhost?
@KubusiowyKubus: dzięki, spróbowałem tak zrobić. Zrobiłem export JDBC_TODO_USER="user" i export JDBC_TODO_PASS="password" (dodałem to do .bashprofile), w application.yml mam coś takiego (plus inne ustawienia, ale na razie tylko te dwa sparametryzowałem):
spring: datasource: username: ${JDBC_TODO_USER} password: ${JDBC_TODO_PASS} i niestety się wywala: Could not connect: Access denied for user '${JDBC_TODO_USER'@'adres-ip'
@KubusiowyKubus: jak chcesz żeby Ci nie wycinało podkreślników to wpisując tekst otocz go apostrofami - potraktuje je jako kod i wyświetli dokładnie. Niestety nic się nie zmieniło
@KubusiowyKubus: spróbowałem już chyba wszystkiego co wygooglałem, chyba umieszczę na chama ten plik konfiguracyjny w repozytorium i tak jest na localhostach.
@KubusiowyKubus: Spróbuję jeszcze później na tym serwerze, na którym stoi ten mój Tomcat. Tylko że na razie nie mogę się do niego dostać po ssh, żeby poustawiać mu te zmienne - jestem na uczelni, a VPN do niego tu nie śmiga, blokują.
@KubusiowyKubus: Już wiem czemu nie działało - Eclipse. Uruchamiałem aplikację poprzez Eclipse'a i on najwidoczniej nie widzi tego co w .bash_profile. Uruchomienie z konsoli mvn spring-boot:run zadziałało od razu.
Aktywne Wpisy
18+
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Mam taki oto zestaw:
1. Prosta aplikacja w Springu trzymana w publicznym repozytorium na GitHubie
2. Postawiony u mnie Tomcat wraz z Jenkinsem
Aplikacja łączy się z bazą danych, mam zatem plik application.yml, który zawiera hasło, adres bazy itp. Mam go dodanego do .gitignore, bo nie chcę by było to widoczne na GitHubie. Jenkins buduje aplikację przy pomocy Mavena i korzysta z tego właśnie repozytorium na GitHubie. Aplikacja zostaje zbudowana, ale Tomcat nie może jej odpalić z racji braku ustawień połączenia z bazą. Czy mogę mavenowi jakoś podsunąć ten plik na czas builda? Tak by nie umieszczać go w repozytorium? Coś na zasadzie
--Dspring.profiles.active
ale z plikiem z konfiguracją a nie nazwą profilu?Czy może się tym nie przejmować i umieścić to application.yml w repozytorium, bo i tak baza jest postawiona na tej samej maszynie co tomcat, więc adres do bazy jest jako localhost?
development sobie sam ustawia np export $JDBC_URL=jdbc:oracle:thin blabla
test ma swój, a prod ma swój.
export JDBC_TODO_USER="user"
iexport JDBC_TODO_PASS="password"
(dodałem to do .bashprofile), w application.yml mam coś takiego (plus inne ustawienia, ale na razie tylko te dwa sparametryzowałem):spring:
datasource:
username: ${JDBC_TODO_USER}
password: ${JDBC_TODO_PASS}
i niestety się wywala:
Could not connect: Access denied for user '${JDBC_TODO_USER'@'adres-ip'
Komentarz usunięty przez autora
$JDBC_TODO_USER
w konsoli ładnie pokazuje wartość tej zmiennejexport jdbctodouser=asdf
username: ${jdbc.todo.user}
Masz skonfigurowany PropertyPlaceholderConfigurer?
#{systemEnvironment['JDBCTODOUSER']}
Niestety nic się nie zmieniło
Komentarz usunięty przez autora
.bash_profile
. Uruchomienie z konsolimvn spring-boot:run
zadziałało od razu.