Standalone tool for initializing of hawkBit Database (#2369)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
52
hawkbit-repository/hawkbit-repository-jpa-init/README.md
Normal file
52
hawkbit-repository/hawkbit-repository-jpa-init/README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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\>-exec.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-exec.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-exec.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)
|
||||
Reference in New Issue
Block a user