Files
hawkbit/hawkbit-repository/hawkbit-repository-jpa-init/README.md
Avgustin Marinov ffc550fcc7 Fix/db refactoring rename (#2365)
* Refactor datbase - renaming

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

* Final refactoring

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-04-25 16:08:23 +03:00

52 lines
2.7 KiB
Markdown

# hawkBit JPA Initializer & Migrator
A standalone tool for validating and migrating the database to the current hawkBit schema. It is used to validate, initialize or migrate the database to the current hawkBit schema.
## Configuration
Could be configured with _hawkbit.db.\<key\>_ or <spring.database.\<key\>_ environment or system properties, with keys:
* **mode** - migrate or validate (default)
* **url** - database url
* **username** - database user - shall have the necessary permissions
* **password** - database user's password
* **sql-migration-suffixes** - flyway 'sqlMigrationSuffixes' if not the default ones (<upper case database (mariadb -> mysql)>.sql)
Where:
1. Environment properties takes precedence over the system properties
2. The _hawkbit.db.\<key\>_ properties take precedence over the _spring.database.\<key\>_ properties
There are two modes:
* **migrate** - migrate the database, only when started with parameter with key mode (environment or system property)
* **validate** - validate the database, default, only validates db and throws org.flywaydb.core.api.exception.FlywayValidateException if not in sync
**Note**: could also be configured using default flyway env properties
## Usage
The module builds executable jar with all dependencies - _hawkbit-repository-jpa-init-\<revision\>.jar_. It could be configured with environment properties and run as an executable jar:
```shell
# sets the mode - default if validate
export hawkbit_db_mode=migrate
# sets the database url - default is local h2
export hawkbit_db_url=jdbc:mariadb://localhost:3306/hawkbit
# sets the database user - default is h2 default root - sa
export hawkbit_db_username=root
# sets the database user's password - default is empty
#export hawkbit_db_password=
# run executable jar
java -jar target/hawkbit-repository-jpa-init-0-SNAPSHOT.jar
```
It could also be configured using system properties and run as a java main class:
```shell
java -classpath target/hawkbit-repository-jpa-init-0-SNAPSHOT.jar \
-Dhawkbit.db.mode=migrate \
-Dhawkbit.db.url=jdbc:mariadb://localhost:3306/hawkbit \
-Dhawkbit.db.username=root \
-Dhawkbit.db.password= \
org.eclipse.hawkbit.repository.jpa.init.HawkbitFlywayDbInit
```
## Purpose and usecases
If you want to do db management separately from the running services - i.e. not in mgmt-server or monolith (for instance) servers but only occasionally and on real updates, or you like to validate a database according to a hawkbit db schema version you could:
1. set spring.flyway.enabled=false in the hawkbit services (or do not pack the hawkbit-repository-jpa-flyway module into the hawkbit services)
2. use the tool to do the db management (e.g. in some pipelines)