Test-System für eine Spring Boot Applikation auf Google App Engine einrichten

von

In einem aktuellen Projekt, in dem wir mit unserer individuellen Software-Lösung den Produktions-Prozess unseres Kunden unterstützen, ging es darum, eine Test- bzw. Staging-Umgebung für eine Spring Boot Applikation innerhalb der Google App Engine aufzusetzen.

Wir haben hierzu folgende Schritte durchgeführt:

  • Anlegen einer eigenständigen Datenbank in Google Cloud SQL for MySQL
  • Anlegen einer appengine-web.xml speziell für die Staging Umgebung
    • Über das Attribut <service>...</service> wird der Name des neuen Service festgelegt
    • Über das Property spring.profiles.active wird das Spring-Boot-Profil definiert -> über dieses Profil wird die Test- bzw. Staging Datenbank konfiguriert
  • Erstellen eines Windows-10 Batches der die Dateien umbenennt, den Staging-Build ausführt und dann wieder die Dateien für das produktive System zurückholt.

Das Staging-System ist dann über eine eigenständige URL aufrufbar, die sich folgendermaßen zusammensetzt: https://[service-name]-dot-[projekt-name].ey.r.appspot.com/

 

appengine-web.xml

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <version>1</version>
    <service>proj-dev-test</service>
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>
    <instance-class>B4</instance-class>
    <manual-scaling>
        <instances>1</instances>
    </manual-scaling>
    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/classes/logging.properties"/>
        <property name="file.encoding" value="UTF-8" />
        <property name="DEFAULT_ENCODING" value="UTF-8" />
        <property name="appengine.file.encoding" value="UTF-8"/>
        <property name="spring.profiles.active" value="gcp--dev" />
    </system-properties>
</appengine-web-app>

application-gcp--dev.properties

spring.datasource.url = jdbc:mysql://google/dev_db?cloudSqlInstance=exensio&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false

spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto=validate

# Logging JSON payload in REST api calls
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
# Get HTTP request method like HTTP GET and returned HTTP Code
logging.level.org.springframework.web.servlet.DispatcherServlet=TRACE

# Remove stacktrace form JSON response
server.error.include-stacktrace=never

deploy_gcp_dev.bat

move src\main\webapp\WEB-INF\appengine-web.xml src\main\webapp\WEB-INF\appengine-web.xml.bak
move ..\vuejs\src\assets\logo.png ..\vuejs\src\assets\logo.png.bak
copy src\main\resources\assets\google-app-engine-dev\appengine-web.xml src\main\webapp\WEB-INF
copy src\main\resources\assets\google-app-engine-dev\logo.png ..\vuejs\src\assets
call gradlew clean buildVueJs appengineDeploy
move src\main\webapp\WEB-INF\appengine-web.xml.bak src\main\webapp\WEB-INF\appengine-web.xml
move ..\vuejs\src\assets\logo.png.bak ..\vuejs\src\assets\logo.png

Kategorien: Quick-Tips

Zurück